Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 将输入文本值传递给bean方法,而不将输入值绑定到bean属性_Jsf_Parameter Passing_Managed Bean - Fatal编程技术网

Jsf 将输入文本值传递给bean方法,而不将输入值绑定到bean属性

Jsf 将输入文本值传递给bean方法,而不将输入值绑定到bean属性,jsf,parameter-passing,managed-bean,Jsf,Parameter Passing,Managed Bean,我是否可以将输入文本字段值传递给bean方法,而不将该值绑定到bean属性 <h:inputText value="#{myBean.myProperty}" /> <h:commandButton value="Test" action="#{myBean.execute()} /> 您可以通过获取请求并使用普通JavaEE来恢复表单的参数。使用此方法时,请记住设置组件的id和名称: 将组件绑定为视图,并将其值作为方法参数传递 与 public void ex

我是否可以将输入文本字段值传递给bean方法,而不将该值绑定到bean属性

<h:inputText value="#{myBean.myProperty}" />
<h:commandButton value="Test" action="#{myBean.execute()} />


您可以通过获取请求并使用普通JavaEE来恢复表单的参数。使用此方法时,请记住设置组件的id和名称:


将组件绑定为视图,并将其值作为方法参数传递


public void execute(字符串值){
// ...
}
请注意,该值已经按照通常的JSF方式进行了转换和验证

另见:

通过这样做,您将实现什么(换句话说,您为什么要这样做)?我将保存几个属性,这些属性仅用作没有实际输入参数的“变通方法”。建议使用什么方法?这一个,还是管理bean中的附加属性?@Alexander:从技术上讲,它取决于模型。如果可以,尽量使模型光滑。显然,如果答案对你有效,你可以这样做。但是,从功能上讲,这种方法可能会混淆跟踪代码的初学者/维护者,并可能将他/她引导到错误的方向,从而理解您这样做的确切原因。因此,我个人添加了一个很好的
,解释为什么您没有声明一个单独的模型属性。这个答案非常有效。我只是想知道,因为我以前从未见过这种情况。谢谢,我会这样做。是否可以通过这种方式编辑inputText按钮的值,然后将其传递回bean?如果输入框位于一个面板内,而该面板本身位于一个表单内,即@AjaySharma,则如何从输入框中检索值?您的输入缺少名称。设置一个名称,然后按其名称检索该值已尝试但不起作用。若输入字段直接作用于表单字段,那个么它可以工作,但若它位于任何面板或任何其他标记内,那个么它就不工作了。。。您是否检查了生成的html以查看组件的名称?在jsf中,名称通常是父容器plus:plus加上组件的id,这就是您缺少它的原因……感谢Luiggi,但我尝试了所有选项。最后,我通过在表单标记下面使用隐藏的输入标记来解决问题。我只需使用getRequest().getParameter(“param_name”)即可检索值
@ManagedBean
@RequestScoped
public class MyBean {
    public void execute() {
        HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
        String txtProperty = request.getParameter("myForm:txtProperty");
        //note the difference when getting the parameter
        String txtAnotherProperty= request.getParameter("txtAnotherProperty");
        //use the value in txtProperty as you want...
        //Note: don't use System.out.println in production, use a logger instead
        System.out.println(txtProperty);
        System.out.println(txtAnotherProperty);
    }
}