Jsf 将输入文本值传递给bean方法,而不将输入值绑定到bean属性
我是否可以将输入文本字段值传递给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
<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);
}
}