jsf - 检索没有托管 bean 属性的 JSF 输入字段的值

标签 jsf input managed-bean

关闭。这个问题不符合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/

相关文章:

jsf - 将方法参数/参数传递给复合组件操作属性

java - RichFaces4 不渲染组件

jsf - 用于授权的RequestFilter和SessionBean

html - opera mini 输入字段中文本的居中对齐

Javascript获取表中输入的值

jsf - 如何从 JSF 的/WEB-INF 文件夹中获取属性文件?

java - 应用程序范围的 bean 生成一个非常奇怪的结果

python - 如何将 shell 命令输出重定向到 Python 脚本输入?

java - jsf 2.0 bean extends another bean Target Unreachable, 'null' returned null

jsf - 传递作为 EL 操作方法参数传递的请求范围变量不起作用