以下是Oracle JavaEE 6教程文档中的引用,用于在JSF 2中传递值表达式和方法表达式中的参数。
值表达式和方法表达式都支持参数。在以下示例中,它是来自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')}">
它实际上会在运行时导致错误。
我的问题:我如何实现这一目标?
答案 0 :(得分: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来应用默认值。
答案 1 :(得分: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
答案 2 :(得分:-1)
使用JBoss EL。请参阅JBoss EL的这个documentation。