如何从视图中为jsf支持bean设置隐藏值

时间:2013-11-08 05:27:29

标签: jsf

我有一个需要在表单提交时设置为jsf支持bean的硬编码值。

任何人都可以告诉你。

 <h:inputHidden value="#{leaveBean.fApproverEmail}"></h:inputHidden>

但是我希望在"#{leaveBean.fApproverEmail}"的位置发送一个硬编码值并将其设置为支持bean的属性..

2 个答案:

答案 0 :(得分:5)

选项1。

将您的媒体资源初始化为您的硬编码值。 JSF将在表单提交时自动更新此属性。因此,如果它已经更改,您将在操作方法中获得更新的属性值。

String fApproverEmail = "default";

<h:inputHidden id="app" value="#{leaveBean.fApproverEmail}" />

选项2。

拥有纯HTML <input type="hidden">或无价值<h:inputHidden>。这样,提交的值在请求参数映射中可用。因此,您可以从ExternalContext#getRequestParameterMap()获取名称作为密钥。但要注意,如果你的对象不是一个字符串,你必须自己进行转换/验证,而操作方法是放错逻辑的错误位置。

String fApproverEmail;
public void action() {
    ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
    String s1 = ec.getRequestParameterMap().get("plain");
    String s2 = ec.getRequestParameterMap().get("form:jsf");
    fApproverEmail = ...;//and-or other logic
}

<h:form id="form">
    <h:inputHidden id="jsf" />
    <input type="hidden" id="plain" name="plain" value="#{backingBean.fApproverEmail}"/>
    ...
</h:form>

答案 1 :(得分:0)

您可以直接从h:inputHidden标记调用bean方法,这样您就可以使用另一个bean方法来获取所需的值。

<h:inputHidden value="#{leaveBean.fApproverEmail(otherBean.methodOrProperty)}"/>