У меня есть вопрос по объекту <h:message for="" />
JSF. У меня есть проект JSF 1.1 (да, к сожалению) myFaces. Я подготовил простой файл JSP с меткой, inputText и держателем сообщения:
<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 сгенерировал идентификатор (например, _idJsp12:DynTab2:DynView2:tabK.....er:vKustaMa....Controller:sacLinkForm:dedicatedCashAccountNumber
), и это, вероятно, приводит к тому, что метод addMessage
не соответствует атрибуту h:message for=".."
.
Таким образом, сообщение отображается неправильно, потому что java не может найти правильный объект h:message
. Есть ли способ установить правильное сообщение h:message
из Java? Я предполагаю, что нет способа принудительно установить «постоянный» идентификатор компонента на страницах JSF 1.1.
Спасибо.
prependId
был представлен в JSF 1.2. ОП использует JSF 1.1. - person BalusC   schedule 13.03.2013