0

Seam プロジェクトに次の xhtml コードがあります。

<rich:column style="text-align:right">
    <h:inputText id="txtPercReqAmount" maxlength="6" style="width:75px;text-align:right;" value="#{pib.reservedPercentage}">
        <a4j:support event="onchange" ajaxSingle="true" action="#{requestForm.onReservedPercentageChange(pib)}" reRender="txtReqAmount,txtBudget,msgPercReqAmount"/>
    </h:inputText>
</rich:column>
<rich:column width="250px" style="text-align:left">
    <rich:message id="msgPercReqAmount" for="txtPercReqAmount" styleClass="messagesingle" errorClass="errormsg" infoClass="infomsg" warnClass="warnmsg">
        <f:facet name="errorMarker"><h:graphicImage url="/img/msgerror.png"/></f:facet>
    </rich:message>
</rich:column>

そして、inputText の「onchange」イベントで検証を行います。<rich:message>検証に失敗した場合は、エラー メッセージを列に書き込みたいと思います。バッキング Bean イベントの Java コードは次のとおりです。

public void onReservedPercentageChange(ProcessInstanceBudget pib) {
    BigDecimal arg2 = pib.getReservedPercentage();
    BigDecimal ra;
    try
    {
        if (arg2 instanceof BigDecimal)
            ra = (BigDecimal) arg2;
        else
            ra = BigDecimal.ZERO;
    }
    catch (ClassCastException cce)
    {
        facesMessages.add(Severity.ERROR, "The allocation request isn't valid!");
        return;
    }

    if (ra.compareTo(BigDecimal.ZERO) < 0 || ra.compareTo(new BigDecimal(100.0)) > 0) {
        facesMessages.add(Severity.ERROR, "Allocation percentage must be in the range between 0 and 100!");
        return;
    }

    updateBudgetAllocation(pib);
}

問題は、エラー メッセージが表示されないことです (「FacesMessage(s) はキューに入れられましたが、表示されていない可能性があります」などの警告は表示されません)。
コードの何が問題なのかわかりません。誰か助けてくれませんか?

4

1 に答える 1