JSF: -Проблема с DataType и Action Listener - PullRequest
1 голос
/ 10 сентября 2011

Я столкнулся с проблемой с компонентом dataType и ActionListener при добавлении двух конкретных компонентов ...

Фрагмент кода JSF: -

<h:outputLabel value="#{msg.org_SubscriberGroupId_1} " styleClass="intro" escape="false"/>
<h:outputLabel value="&nbsp;:&nbsp;" escape="false"/>
<h:inputText value="#{SubscriberServiceProfile.closedSubscriberGroupId1}" id="txtClosdGrup1" styleClass="textBox" label="#{msg.org_SubscriberGroupId_1}" />                                                     

<h:outputLabel value="#{msg.org_expiryDate_1}" styleClass="intro" escape="false"/>
<h:outputLabel value="&nbsp;:&nbsp;" escape="false"/>
<rich:calendar id="expiryDate1" value="#{SubscriberServiceProfile.dtExpiryDate1}" styleClass="textBox" datePattern="dd-MMM-yyyy" required="false" label="#{msg.org_expiryDate_1}" />

Код повторяется 5 раз...с разными идентификаторами ... и разными индексами ...

Код моего бина поддержки: -

public class ServiceProfile
{

private String closedubscriberGroupId1="0";
private String closedSubscriberGroupId2="0";
private String closedSubscriberGroupId3="0";
private String closedSubscriberGroupId4="0";
private String closedSubscriberGroupId5="0";
private Date dtExpiryDate1;
private Date dtExpiryDate2;
private Date dtExpiryDate3;
private Date dtExpiryDate4;
private Date dtExpiryDate5;

//respective getters and setters

public void create(ActionListener act)
{
//action listener code
}

}

Проблема связана с типом данных ClosedSubscriberGroup или датой истечения срока действия.Пользователь будет вводить целочисленное значение в поле ввода IOS closedSubscriberGroup.

Но проблема в том, что мой actionListener не запускается до тех пор, пока я не укажу значения во всех 5 текстовых полях closedSubscriberGroupId..Нет проверки есть вJSF. До сих пор он не позволяет мне отправить форму и вызвать actionListener.

В чем может быть возможная проблема .. ???? .. Это DataType ???или любая другая проблема ?? ... Пожалуйста, ведите меня ....

1 Ответ

1 голос
/ 12 сентября 2011

Из вашего комментария кажется, что вы хотите установить значения, которые вы вводите в <h:inputText> и <rich:calendar> для его базовых компонентов, и немедленно вызывать метод bean всякий раз, когда происходит событие onchange в <h:inputText> и <rich:calendar>

Вы можете использовать a4j:support:

<rich:calendar value="#{bean.date}" styleClass="textBox" datePattern="dd-MMM-yyyy" required="false">
    <a4j:support event="onchanged" action="#{bean.onChangeDate}" ajaxSingle="true"/>
</rich:calendar>

<h:inputText value="#{bean.aString}"  styleClass="textBox">
    <a4j:support event="onchange" action="#{bean.onChangeText}"  ajaxSingle="true" />
</h:inputText> 

Это означает, что всякий раз, когда события onchange происходят в <h:inputText> и <rich:calendar>, будет запущен Ajax-запрос для вызова метода, указанного в атрибуте action. Атрибут ajaxSingle здесь важен, так как он устанавливает значения, введенные вами в элементах управления, сразу же на его базовый компонент до вызова action.

Обратите внимание, что для rich:calendar событие onchange onbound вместо onchange

Справка:

...