Closed. 这个问题不符合堆栈溢出指南 /help/closed-questions 。目前不接受答案。
我想在托管 bean 操作方法中检索 JSF 输入框的值,而不将其与任何托管 bean 属性关联。例如。
<p:inputText id="txtuserid" value="" />
我的用例是,在我的应用程序中,我希望在每个 DML 操作中提示用户输入密码,因此希望在每个 UI 上都有一个密码和注释相关字段,并且注释需要保存在用于审计目的的公用表。
我怎样才能实现这个目标?
只需执行与 JSF 在幕后所做的相同操作:获取 HTTP 请求参数。如果您熟悉基本的 HTML,您就会知道每个 HTML 输入元素都会发送其name=value
作为 HTTP 请求参数。
Given a
<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() http://docs.oracle.com/javaee/6/api/javax/faces/context/ExternalContext.html#getRequestParameterMap%28%29 :
public void submit() {
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
String userId = ec.getRequestParameterMap().get("formId:userId");
// ...
}
如有必要,请不要忘记手动转换和验证它,就像 JSF 在幕后所做的那样。换句话说,只需编写额外的代码来重复 JSF 的工作,这样您的代码就不会被忽略。DRY http://en.wikipedia.org/wiki/Don%27t_repeat_yourself :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)