在存在来自特定对象的消息时有条件地渲染组件
Conditionally render component on presence of message from specific object
我打算验证下面bootstrap形式的字段usernameTxt
,参考BalusC answer and Aleksei Loginov answer
<div class="form-group">
<label class="control-label col-sm-2" for="usernameTxt">Fullname(*):</label>
<div class="col-sm-10">
<h:inputText type="text" class="form-control" id="usernameTxt"
a:placeholder="Enter your name" required="true"
requiredMessage="Fullname is required"
value="#{data.personalInformation.username}"></h:inputText>
<h:panelGroup layout="block" rendered="#{not empty facesContext.getMessageList('usernameTxt')}" class="alert alert-danger">
<h:message for="usernameTxt"></h:message>
</h:panelGroup>
</div>
</div>
希望是,如果输入文本为空,那么它将呈现块 <h:panelGroup>
,结果应该是这样的
(那张照片是我去掉rendered
属性中的not
条件时的照片)。我无法正确地有条件地渲染块。渲染条件中是否有任何语法,或者我在这里遗漏了什么?
问题已解决
我花了一整天的时间才发现页面上的实际 usernameTxt
id 已经呈现,这与我预期的不一样
所以我必须把条件改回
<h:panelGroup layout="block"
rendered="#{not empty facesContext.getMessageList('form:j_id_9:useridTxt')}"
class="alert alert-danger">
<h:message for="useridTxt"></h:message>
</h:panelGroup>
它解决了我的问题
我打算验证下面bootstrap形式的字段usernameTxt
,参考BalusC answer and Aleksei Loginov answer
<div class="form-group">
<label class="control-label col-sm-2" for="usernameTxt">Fullname(*):</label>
<div class="col-sm-10">
<h:inputText type="text" class="form-control" id="usernameTxt"
a:placeholder="Enter your name" required="true"
requiredMessage="Fullname is required"
value="#{data.personalInformation.username}"></h:inputText>
<h:panelGroup layout="block" rendered="#{not empty facesContext.getMessageList('usernameTxt')}" class="alert alert-danger">
<h:message for="usernameTxt"></h:message>
</h:panelGroup>
</div>
</div>
希望是,如果输入文本为空,那么它将呈现块 <h:panelGroup>
,结果应该是这样的
(那张照片是我去掉rendered
属性中的not
条件时的照片)。我无法正确地有条件地渲染块。渲染条件中是否有任何语法,或者我在这里遗漏了什么?
问题已解决
我花了一整天的时间才发现页面上的实际 usernameTxt
id 已经呈现,这与我预期的不一样
所以我必须把条件改回
<h:panelGroup layout="block"
rendered="#{not empty facesContext.getMessageList('form:j_id_9:useridTxt')}"
class="alert alert-danger">
<h:message for="useridTxt"></h:message>
</h:panelGroup>
它解决了我的问题