2012-06-27 33 views
1

在面configs.xml,實際重定向鏈接是從臉上-configs.xml鏈接不同,當有parmeters

<navigation-rule> 
    <from-view-id>/login.jspx</from-view-id> 
      <navigation-case> 
     <from-outcome>failure</from-outcome> 
     <to-view-id>/login.jspx?Error=InvalidUser</to-view-id> 
     <redirect /> 
    </navigation-case> 
     </navigation-rule> 

當登錄返回「失敗」,則返回頁面login.jspx但不是login.jspx?錯誤=網站地址中的InvalidUser。

我該如何解決?謝謝!

+0

看起來像你把問題標記爲JSF 2.0,爲什麼你還在使用配置文件進行導航? – Ravi

回答

0

JSP/JSPX與JSF有很大不同。在使用JSF2.x版本時,最好建議使用JSF頁面(.xhtml)進行UI開發。 而不是修復上述錯誤,我建議您完全使用JSF或JSP來執行應用程序,不建議將兩者合併並進入兼容性問題。

在JSF-x版本

而且我們不需要導航規則的faces-config.xml文件中定義,它們可以被配置網頁或相應的管理bean本身

<h:commandLink id = "submitBtn" value="New Page" action="#{bean.showPage}"> 
</h:commandLink> 

豆可以有一個方法

public String showPage(){ 
    return "\login.xhtml"; 
} 

<h:commandButton id="submitBtn" value="Submit" action="Response.jsp"> 
0

您需要將其指定爲0123在<redirect>中的,而不在<to-view-id>中。

<navigation-case> 
    <from-outcome>failure</from-outcome> 
    <to-view-id>/login.jspx</to-view-id> 
    <redirect> 
     <view-param> 
      <name>Error</name> 
      <value>InvalidUser</value> 
     </view-param> 
    </redirect> 
</navigation-case> 

由於JSF 2.0新的隱式導航功能可以完全擺脫導航情況。以上可以通過在action方法中返回以下字符串來替換。

public String login() { 
    // ... 

    if (failure) { 
     return "/login.jspx?Error=InvalidUser&faces-redirect=true"; 
    } 
}