我有一个非常复杂的jsf页面(我们在facelet中使用jsf2),在这个页面中,我必须“插入”一个纯html表单部分(它表示一个文档的wysiwyg模板,稍后将创建为pdf)。
页面看起来很简单

<h:form id="formEditDoc">
   <p:commandButton styleClass="commandButton" value="Save"
      actionListener="#{myBean.myAction}" update="masterForm:msg">
   </p:commandButton>

   <!-- some jsf controls here -->
   ....

   <!-- this is my dynamic section -->
   <input id="ft2" type="text" value="foo"/>
</h:form>

在托管bean mybean(请求作用域)中,我有一个动作监听器,在这个监听器中,我试图以这种方式获取“foo”字符串:
String text1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("ft2");

但我无法得到价值。text1始终为空。我甚至试图将ajax=false设置为commandbutton,但没有改变。
你知道我做错了什么吗?

最佳答案

输入的name=value对作为请求参数name=value发送,而不是id=value。您需要改为设置name属性。

<input id="ft2" name="ft2" type="text" value="foo"/>

与具体问题无关,我建议使用@ManagedProperty来设置值:
@ManagedProperty("#{param.ft2}")
private String ft2;

10-06 04:23