6

これは、JSF2の値式とメソッド式でパラメータを渡すためのOracleJavaEE6チュートリアルドキュメントからの引用です。

パラメータは、値式とメソッド式の両方でサポートされています。次の例では、guessNumberアプリケーションからの変更されたタグであり、ユーザー入力からメソッド呼び出しではなく、引数として乱数が提供されます。

<h:inputText value="#{userNumberBean.userNumber('5')}"> 

上記の例では、値式を使用しています。

そしてこれはデフォルトのものです:

<h:inputText value="#{userNumberBean.userNumber}">

Beanクラス-

import java.util.Random;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped; 

@ManagedBean
@SessionScoped
public class UserNumberBean {

    Integer randomInt = null;
    Integer userNumber = null;

    public UserNumberBean() {
        Random randomGR = new Random();
        randomInt = new Integer(randomGR.nextInt(10));
        System.out.println("Duke's number: " + randomInt);
    } 

    public void setUserNumber(Integer user_number) {
        userNumber = user_number;
    }

    public Integer getUserNumber() {
        return userNumber;
    }

}

次の式は、パラメーターとして5をinputTextに渡していません。

<h:inputText value="#{userNumberBean.userNumber('5')}">

実際には、実行時にエラーが発生します。

私の質問:どうすればこれを達成できますか?

4

3 に答える 3

5

提供した例では、パラメーターを渡す必要はありません。

この状況では、ゲッターとセッターはバッキングBeanで自動的に呼び出されます。

次のコードは、getUserNumberやsetUserNumberを呼び出しinputTextコンポーネントの値を取得および/または変更します。

<h:inputText value="#{userNumberBean.userNumber}">

ユーザーが入力したフォーム値は、パラメーターとしてsetUserNumberに渡されます。


バッキングBeanメソッドにパラメーターを渡すには、次のようにします。

<h:commandButton  action="#{userNumberBean.displayAlert('Hey')}"    value="Say Hey"/>
<h:commandButton  action="#{userNumberBean.displayAlert('Later')}"  value="Say Bye"/>

これにより、次のようなメソッドが呼び出されます。

public String displayAlert(String someText)


Bhesh Gurungの回答が示唆しているように、コンストラクターではデフォルトでuserNumberを5に設定できます。

ここで提案されている方法の1つを使用して、デフォルト値を適用することもできます。

于 2012-08-14T03:16:40.657 に答える
2

テキストボックスのデフォルト値として5を設定(表示)するには、ビューで次の変更を行います-

<h:inputText value="#{userNumberBean.userNumber}">

そして、managedbeanのプロパティの値を設定します。

@ManagedBean
@SessionScoped
public class UserNumberBean {

    private Integer randomInt = null;
    private Integer userNumber = null;

    public UserNumberBean() {
        //...            
        this.userNumber = 5; // try this here
    }

    //getter/setter
于 2012-08-14T05:07:25.123 に答える
-1

JBossELを使用します。JBossELのこのドキュメントを参照してください。

于 2012-08-14T04:09:04.037 に答える