如何将<h:inputhidden>中的字符串值放入bean属性?</h:inputhidden>

时间:2013-07-09 09:40:53

标签: jsf tomcat input primefaces javabeans

我有一个简单的“注册”页面,使用primefaces标签构建,用户输入他的登录信息,点击OK,并通过POST请求将信息存储在数据库中。登录保存正确,但还有另一个... 我想存储隐含的String字段,它表示用户的“角色”,并且始终等于“Guest”。我尝试过两种不同的方法,但所有方法都失败了:

1)

<h:outputLabel for="login" value="Login" />
<p:inputText required="true" id="login" value="#{userBean.login}" 
    label="Login" />
<h:inputHidden value="#{userBean.roleName}" id="rolename" 
    name="Guest" />
<p:commandButton value="OK" update="dataForm" action="#{userBean.create}" 
     ajax="false">

2)

<h:outputLabel for="login" value="Login" />
<p:inputText required="true" id="login" value="#{userBean.login}"
     label="Login" />
<p:commandButton value="OK" update="dataForm" action="#{userBean.create}" 
    ajax="false">
    <f:param id="rolename" value="User" binding="#{userBean.roleName}"/> 
</p:commandButton>

任何人都可以为我提供一个想法吗? 谢谢。 环境:jdk7,tomcat7,eclipse,primefaces

1 个答案:

答案 0 :(得分:2)

使用纯HTML <input type="hidden">或JSF <f:param>以及@ManagedProperty

所以,

<input type="hidden" name="rolename" value="Guest" />

<p:commandButton ...>
    <f:param name="rolename" value="Guest" />
</p:commandButton>

无论哪种方式,它们都可以通过

作为HTTP请求参数使用
@ManagedProperty("#{param.rolename}")
private String rolename; // +getter+setter