关于JFS的地址栏url与真实jsp页面不同步的问题

05-12-15 CT_Owen
刚接触JSF

在faces-config中定义JSF的导航问题

    <navigation-rule>
        <from-view-id>/signup.jsp</from-view-id>
        <navigation-case>
            <from-outcome>cancel</from-outcome>
            <to-view-id>/login.jsp</to-view-id>
        </navigation-case>
        ....
        ....
    </navigation-rule>
<p>

可是在IE的地址栏的url地址总和实际的jsp页面相差一步

就是说只有在下一个链接中,才显示上这个页面的url地址

查资料说用<redirect/>来处理

但是用了<redirect/>后,在<managed-bean-scope>request中带的参数却得不到

换成session|application也不行

哪位是不是也遇到过这样得情况.

帮助在下解决一下

njava
2005-12-16 09:24
这个跟JSF没有什么关系,

好象没什么办法,Application应该能得到吧

caigao
2005-12-16 15:35
这是用dispatch.forward(req,res)得到的结果,

forward与sendredirect的区别在于前者跳转的后的页面与跳转前的页面具备相同的page scope,而后者在跳转前后具备不同的page scope

(好像是这样,你可以找找资料研究一下), 这也没有什么不好啊,有什么影响吗?

我的作法是: 在index.jsp中不使用jsf,同时在进入子页面回到index.jsp时使用<h:outputLink value='index.jsp'/>这样的话,回到首页后location就还原成index.jsp了,如果使用<h:commandLink/>回到首页时lcoation显示的是原来的子页面,而不是index.jsp,虽然没有什么大的影响,但总觉得有些别扭.

你可以参考一与这个做法.

caigao
2005-12-16 15:37

<h:outputLink value="index.jsp" />
<p>

哈哈哈................

<h:commandLink />
<p>

CT_Owen
2005-12-16 17:45
谢谢您的建议

其实url和真实jsp页面不同步没有什么影响

就是看起来别扭而已

这算是JSF框架的一个缺陷吧?

定义一个commandButton的action

<h:commandButton value="#{text['button.save']}" action="#{customerModifyForm.save}" 			           id="save" styleClass="button"/>
<p>

在customerModifyForm中的sava方法中如果成功返回success

        <navigation-case>
            <from-outcome>success</from-outcome>
            <to-view-id>/customertView.jsp</to-view-id>
        </navigation-case>
<p>

在to-view-id中只是对跳转的目的jsp页面进行了配置

在navigation-case中添加<redircet/>倒是可以使url地址显示正确

但是个人对<redircet/>作用的时间不是很明确

测试时候发现

<managed-bean>
        <managed-bean-name>customerModifyForm</managed-bean-name>
        <managed-bean class>webapp.action.CustomerModifyForm</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
<p>

当scope是request时,<redircet/>是先执行的,于是上一页面的参数全部

消失,设置的断点中跟踪也没发现结果

但是当scope是application时,发现<redirect/>是后执行的,能得到页面的到的值,但是redirect后又全部消失

现在没有继续研究我问的这个问题了

但还是感谢caigao一下

猜你喜欢