关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。
想改进这个问题?将问题更新为 on-topic对于堆栈溢出。
8年前关闭。
Improve this question
我想在托管 bean 操作方法中检索 JSF 输入框的值,而不会将它与任何托管 bean 属性关联。例如。
<p:inputText id="txtuserid" value="" />
我的用例是,在我的应用程序中,我想在这里和那里提示用户为每个 DML 操作输入密码,因此希望在我的每个 UI 上都有一个密码和评论相关字段,并且备注需要保存在一个用于审计目的的公用表。
我怎样才能做到这一点?
最佳答案
只需像 JSF 在幕后所做的一样:获取 HTTP 请求参数。如果您熟悉基本的 HTML,就会知道每个 HTML 输入元素都会发送其 name=value
对作为 HTTP 请求参数。
给定一个
<h:form id="formId">
<p:inputText id="userId" /> <!-- Note: no value attribute at all, also no empty string! -->
...
<p:commandButton value="submit" action="#{bean.submit}" />
</h:form>
它基本上生成以下HTML
<form id="formId" name="formId">
<input type="text" name="formId:userId" ... />
...
<button type="submit" ...>submit</button>
</form>
你可以从
ExternalContext#getRequestParameterMap()
获取它:public void submit() {
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
String userId = ec.getRequestParameterMap().get("formId:userId");
// ...
}
如有必要,不要忘记手动转换和验证它,就像 JSF 在幕后所做的那样。换句话说,只需通过编写额外的代码来重复 JSF 的工作,这样您的代码就不会是 DRY。 :)
关于jsf - 检索没有托管 bean 属性的 JSF 输入字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19002570/