我试图在密码字段应该具有的规则列表之间放置一个换行符:
希望此代码可以帮助您在本地计算机上重现它
我的JSF表单看起来像:
<h:form id="passwordForm">
<div class="form-group has-feedback">
<p:password id="password1" value="#{testBean.password}"
required="true"
requiredMessage="This field cannot be left empty"
placeholder="Password">
</p:password>
<p:tooltip for="password1" id="password1ToolTip"
hideEvent="focus"
rendered="#{not empty facesContext.getMessageList('passwordForm:password1')}"
position="right" hideEffect="fade" showEffect="fade">
<p:message for="password1"/>
</p:tooltip>
</div>
</h:form>
这是我的bean看起来的样子:
@Named
@RequestScoped
public class TestBean implements Serializable {
private static final long serialVersionUID = 2016821444602021904L;
@Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}",
message = "Password should contain minimum 8 characters, 1 Uppercase alphabet, 1 lower case alphabet and 1 special character")
@Size(min = 8, message = "Password cannot be this short!")
private String password;
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
}
基于SO的一些答案,我尝试通过引入特殊实体代码
和[![ ][1]][1]
来修改验证消息,如下所示:
Password should contain Minimum 8 characters 1 Uppercase alphabet 1 lower case alphabet and 1 special character
为什么要在额外的工具提示中显示消息?看起来有点奇怪。
无论如何,你需要的是一个<br/>
,你想要换行,并在你的p:消息中设置escape =“false”。
信息:
Password should contain Minimum 8 characters 1 <br/> Uppercase Password...
XHTML:
<p:message for="password1" escape="false"/>
UPDATE1:
感谢Parkash Kumar提供更多信息以改善答案。
UPDATE2:
您也可以使用CSS和/n
进行换行,然后您需要申请:
#messages td { white-space: pre; }
到你的CSS。