Мне нужно проверить два пользовательских поля ввода друг против друга в шве. Поле1 должно быть больше поля2 для каждой строки в теге ui: repeat. На данный момент у меня есть два поля, обернутые в тег s: decorate, который оборачивает все входные данные в тег s: validateAll. Это позволяет мне выводить сообщение об ошибке справа от полей, если проверка не удалась для любого из них.
Например (я не могу вставить изображение, поэтому я должен использовать изображение ascii, простите за низкое качество, курсивом выделен красный текст):
Метка: | Желтый | 0 |% Красный: | 0% | | Желтый и красный должны быть в диапазоне от 0 до 100, а желтый должен быть больше красного.
Метка: | Желтый | 0 |% Красный: | 0% | | Желтый и красный должны быть в диапазоне от 0 до 100, а желтый должен быть больше красного.
Два элемента управления и декорация xhtml ниже. ПРИМЕЧАНИЕ. Проверка «значения между 0 и 100» уже выполняется с помощью аннотации гибернации. Мне нужно только знать, как проверять эти 2 поля друг против друга, чтобы убедиться, что желтый больше красного, и при этом отображается сообщение об ошибке.
Мое желаемое решение - установить свойство # {invalid} для соответствующего тега s: decorate, чтобы появилось сообщение об ошибке, но я приму любые идеи.
Входы:
<table>
<ui:repeat value="#{action.List}" var="var">
<s:decorate template="/layout/decorateMultipleInputs.xhtml" >
<ui:define name="label">
Label:
</ui:define>
<ui:define name="input">
<h:panelGrid columns="8" frame="border">
<h:outputText value="Yellow:" />
<h:inputText value="#{var.yellow}" style="width:25px; text-align:right" maxlength="3"/>
%
<h:outputText value="Red:" />
<h:inputText value="#{var.red}" style="width:25px; text-align:right" maxlength="3"/>
%
</h:panelGrid>
</ui:define>
<ui:define name="message">Yellow and Red must be between 0 and 100, and Yellow must be greater than Red.
</ui:define>
</s:decorate>
</ui:repeat>
</table>
и decorateMultipleInputs.xhtml:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:s="http://jboss.com/products/seam/taglib">
<tr>
<td>
<s:label styleClass="#{invalid?'error':''}">
<ui:insert name="label"/>
<s:span styleClass="required" rendered="#{required}">*</s:span>
</s:label>
</td>
<td>
<s:validateAll>
<ui:insert name="input"/>
</s:validateAll>
</td>
<td>
<s:div styleClass="error" rendered="#{invalid}">
<h:graphicImage value="/images/error.gif" />
</s:div>
</td>
<td>
<s:div styleClass="error" rendered="#{invalid}">
<ui:insert name="message"/>
</s:div>
</td>
</tr>
</ui:composition>