0

login.xhtml ページに 2 つのテキスト ボックスと 1 つの送信ボタンがあります。私も豆を持っています。コードは次のとおりです。

<?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://xmlns.jcp.org/jsf/html">
<h:head>
    <title>Welcome to Online Banking</title>
</h:head>
<h:body>
    <h:outputText value="Online Banking System Login" ></h:outputText>
    <h:form>
        <h:panelGrid columns="2" border="1">
            <h:outputText value="Username:"></h:outputText>
            <h:inputText id="username" value="#{loginBean.username}"></h:inputText>
            <h:outputText value="Password"></h:outputText>
            <h:inputSecret  id="password" value="#{loginBean.password}" >    </h:inputSecret>
            <h:commandButton value="Login" action="#{loginBean.loginCheck(username, password)}"></h:commandButton>

        </h:panelGrid>
    </h:form>
</h:body>
</html>

そしてビーンズファイル:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans;

import javax.inject.Named;
import javax.enterprise.context.Dependent;

/**
 *
 * @author SUUSER
 */
@Named(value = "loginBean")
@Dependent

public class LoginBean {

/**
 * Creates a new instance of LoginBean
 */
public LoginBean() {
}

private static String username="", password="";

public String getUsername(){
    return username;
}
public String getPassword(){
    return password;
}
public void setUsername(String Username){
    username=Username;
}
public void setPassword(String Password){
    password=Password;
}

public void loginCheck(String username, String password){


}
}

loginCheck 関数でデータベース チェックを行うので、これら 2 つのテキスト ボックスの値をパラメーターとして渡す必要があります。しかし、私はこれを行う方法がわかりません。コードを試してみましたが、空の文字列をパラメーターとして渡すだけです。誰でもこれで私を助けることができますか?

ありがとう

4

4 に答える 4

0

JSF は、テキストボックスの値をバッキング Bean の変数に自動的にバインドします。

したがって、関数の呼び出しでバッキング Bean に値を渡す必要はありません。このように置くことができます

<h:commandButton value="Login" action="#{loginBean.loginCheck}"></h:commandButton>

そしてBeanでは、それらを通常の変数として使用できます。また、バッキング Bean データを格納するために静的変数を使用しないことをお勧めします。

    public String loginCheck(){if(username == <fromDB> && password == <fromDB>) return "loginsuccess"; else return "loginfailure"; }

お役に立てれば。

于 2013-07-03T13:45:46.053 に答える
0

さて、私が理解していることから、loginCheck関数でこれらのテキストボックスの値をチェックしますか。JSF はパラメーターの値を変数に自動的に設定するため、gets() で操作できます。たとえば、次のとおりです。

<h:form>
    <h:panelGrid columns="2" border="1">
        <h:outputText value="Username:"></h:outputText>
        <h:inputText id="username" value="#{loginBean.username}"></h:inputText>
        <h:outputText value="Password"></h:outputText>
        <h:inputSecret  id="password" value="#{loginBean.password}" >    </h:inputSecret>
        <h:commandButton value="Login" action="#{loginBean.loginCheck()}"></h:commandButton>

    </h:panelGrid>
</h:form>

彼の ManagedBean の末尾は次のとおりです。

@ManagedBean(name= "loginBean")
public class LoginBean {

public LoginBean() {
}

// gets and sets

public void loginCheck(){

   if(getUsername() != null && getPassword() != null){

       // and here you chek database parameters
     }

   }
}
于 2013-07-03T14:03:35.513 に答える