我有一个非常复杂的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;