6

这是来自 Oracle JavaEE 6 教程文档的引用,用于在 JSF 2 中传递值表达式和方法表达式中的参数。

值表达式和方法表达式都支持参数。在以下示例中,它是来自 guessNumber 应用程序的修改标记,随机数作为参数提供,而不是从用户输入到方法调用:

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

上面的例子使用了一个值表达式。

这是默认的:

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

豆类——

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

您不需要在提供的示例中传递参数。

在这种情况下,getter 和 setter 会在您的支持 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。

您还可以使用此处建议的方法之一来应用默认值。

于 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

使用 JBoss EL。请参阅 JBoss EL 的此文档

于 2012-08-14T04:09:04.037 回答