2012-08-14 39 views
4

这里是从Oracle的JavaEE 6教程文档在JSF 2.如何在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')}">

它在运行时实际上会导致错误。

我的问题:我该如何做到这一点?

回答

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的答案所示,您可以设置用户编号默认在构造函数中为5。

您也可以使用suggested here方法之一应用默认值。

+0

你的意思是按钮或commandButton? – exexzian 2012-08-15 18:44:09

+0

不确定。我其实已经有很长一段时间没有使用JSF了。这应该不重要。 – jahroy 2012-08-15 19:16:39

+0

不,我在IDE中检查它没有该按钮标记的动作属性,虽然commandButton确实有它,它的工作很好。所以,我想你应该相应地编辑它 – exexzian 2012-08-15 19:29:13

-1

使用JBoss EL。请参阅JBoss EL的documentation

+0

Tomcat7支持它,我想。 – gaffcz 2012-08-14 05:44:09

+0

不知道Tomcat,但它没有在GlassFish 3上工作...让我试试包括那个罐子希望工程 – exexzian 2012-08-14 12:07:43

+0

@exex:这个答案根本不能解释/回答你的具体问题。 -1。谁高举这个答案应该重读这个问题。 – BalusC 2012-08-14 12:53:02

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 
+0

它不是我想要的 – exexzian 2012-08-15 18:43:22

相关问题