exe*_*ian 5 java jsf parameter-passing javabeans jsf-2
以下是Oracle JavaEE 6教程文档中的引用,用于在JSF 2中传递值表达式和方法表达式中的参数.
值表达式和方法表达式都支持参数.在以下示例中,它是guessNumber应用程序的修改标记,提供随机数作为参数,而不是从方法调用的用户输入:
<h:inputText value="#{userNumberBean.userNumber('5')}">
Run Code Online (Sandbox Code Playgroud)
上面的示例使用值表达式.
这是默认的:
<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;
}
}
Run Code Online (Sandbox Code Playgroud)
以下表达式未将5作为参数传递给inputText:
<h:inputText value="#{userNumberBean.userNumber('5')}">
它实际上在运行时导致错误.
我的问题:我如何实现这一目标?
您不需要在您提供的示例中传递参数.
在这种情况下,将在您的辅助bean上自动调用getter和setter.
以下代码将调用getUserNumber和/或setUserNumber来检索和/或修改inputText组件的值:
<h:inputText value="#{userNumberBean.userNumber}">
用户输入的表单值将作为参数传递给setUserNumber.
要将参数传递给backing bean方法,您可能会执行以下操作:
<h:commandButton action="#{userNumberBean.displayAlert('Hey')}" value="Say Hey"/>
<h:commandButton action="#{userNumberBean.displayAlert('Later')}" value="Say Bye"/>
Run Code Online (Sandbox Code Playgroud)
这将调用如下所示的方法:
public String displayAlert(String someText)
正如Bhesh Gurung的回答所示,您可以在构造函数中默认将userNumber设置为5.
您还可以使用此处建议的方法之一来应用默认值.
| 归档时间: |
|
| 查看次数: |
6570 次 |
| 最近记录: |