- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这是 Oracle JavaEE 6 教程文档中关于在 JSF 2 中传递值表达式和方法表达式中的参数的引用。
Parameters are supported for both value expressions and method expressions. In the following example, which is a modified tag from guessNumber application, a random number is provided as an argument rather than from user input to the method call:
<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')}">
它实际上会在运行时导致错误。
我的问题:我该如何实现??
最佳答案
您不需要在您提供的示例中传递参数。
在这种情况下,会在您的支持 bean 上自动调用 getter 和 setter。
以下代码将调用 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。
您也可以使用其中一种方法 suggested here应用默认值。
关于java - 如何在 JSF 2 的值表达式和方法表达式中传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11945145/
我是一名优秀的程序员,十分优秀!