根据<h:message for="" />
JSF 对象,我有一个问题。我有一个 JSF 1.1(是的,不幸的是)myFaces 项目。我准备了一个带有标签、inputText 和消息持有者的简单 JSP 文件:
<h:form id="sacLinkForm">
<cblFaces:outputLabel for="dedicatedCashAccountNumber"
value="#{appBundle.KUSTA_DEDICATED_CASH_ACCOUNT_NUMBER}"/>
<t:inputText id="dedicatedCashAccountNumber"
value="#{createController.modelFE.sacLink.dedicatedCashAccountNumber}"/>
<h:message id="dedicatedCashAccountNumberError"
for="dedicatedCashAccountNumber" />
</h:form>
我还创建了简单的验证方法:
public static boolean validate(SACLink link) {
boolean isError = false;
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage message = new FacesMessage();
message.setSeverity(FacesMessage.SEVERITY_ERROR);
if (StringUtils.isEmpty(link.dedicatedCashAccountNumber)) {
//MessageUtils.addErrorMessage("dedicatedCashAccountNumber", "Dedicated Cash Account Number is mandatory");
message.setSummary("Field mandatory");
message.setDetail("Dedicated Cash Account Number is mandatory");
context.addMessage("sacLinkForm:dedicatedCashAccountNumber", message);
isError = true;
}
return !isError;
}
我的问题是sacLinkForm:dedicatedCashAccountNumber
因为编译的 JSP 生成了 id (fe _idJsp12:DynTab2:DynView2:tabK.....er:vKustaMa....Controller:sacLinkForm:dedicatedCashAccountNumber
),它可能导致该方法与属性addMessage
不对应。h:message for=".."
因此消息无法正确显示,因为 java 找不到正确的h:message
对象。有什么方法可以h:message
从 Java 将消息设置为正确的吗?我假设没有办法在 JSF 1.1 页面中强制“恒定”组件 ID。
谢谢你。