0

Apache Myfaces 2.1を使用して(JSF 1.xを使用して)Login.xhtmlを作成しました

login.xhtmlでユーザー名とパスワードを指定し、送信ボタンが1つある場合。

さようならボタンをクリックすると、コントロールはwsListing.xhtmlに移動しますが、ブラウザーのURLは次のようになります。

http://hostid:8080/TestClient/faces/login.xhtml

次のように変更したい

http://hostid:8080/TestClient/faces/wsListing.xhtml

同じコードを添付しました。解決策を提案してください。JSFは初めてです。

Login.xhtml

  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui" xmlns:lang="en">
<f:view>
    <head>
<title>Test Client Login</title>
    </head>
    <h:form id="loginForm">
        <table>
        <tr>
                <h:outputLabel for="username">
                    <h:outputText id="usernameLabel" value="Enter Username:" />
                </h:outputLabel>
                <h:inputText id="username" value="#{loginBean.username}"
                    required="true">
                    <f:validateLongRange minimum="1" maximum="500" />
                </h:inputText>
        </tr>
        <tr>        
                <h:outputLabel for="password">
                    <h:outputText id="passwordLabel" value="Enter Password:" />
                </h:outputLabel>
                <h:inputText id="password" value="#{loginBean.password}"
                    required="true">
                    <f:validateLongRange minimum="1" maximum="500" />
                </h:inputText>
        </tr>
        <tr>    

        <h:commandButton id="goodbyeCommand" type="submit" value="Goodbye"
            action="#{loginBean.goodbye}" immediate="true" />

        </tr>   
</table>
    </h:form>
</f:view>


</html>

LoginBean.java

package com.example;

/**
 * Managed Bean for Login
 * 
 */
public class LoginBean {

    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String goodbye() {
        return "success";
    }
}

faces-config.xml

<?xml version="1.0"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
<managed-bean>
        <description>Login Bean</description>
        <managed-bean-name>loginBean</managed-bean-name>
        <managed-bean-class>com.example.LoginBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
<navigation-rule>
        <description>Navigation from the hello page.</description>
        <from-view-id>/login.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>success</from-outcome>
            <to-view-id>/wsListing.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>
4

1 に答える 1

2

リダイレクトを送信する必要があります。に追加<redirect /><navigation-case />ます。

<navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/wsListing.xhtml</to-view-id>
    <redirect />
</navigation-case>

具体的な問題とは関係なく、 MyFaces2.1はJSF2.1の実装です。なぜWebアプリをJSF1.2modusで実行するように強制するのですか?JSF2.xの多くの利点を見逃しています。

于 2012-05-09T12:13:50.000 に答える