2011-09-10 4 views
1

と-Problem ...JSF:私は2つの特定のコンポーネントを追加することでデータ型コンポーネントとの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}" /> 

コードは...異なるID ...と異なるインデックスの5倍...を繰り返し

私のバッキングBeanのコードである: -

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またはExpiry dateのdataTypeにあります。 ユーザーはclosedSubscriberGroup Id入力フィールドに整数値を入力します。

しかし問題は、私がclosedSubscriberGroupIdの5つのテキストボックスすべてに値を指定しない限り、私のactionListenerが起動しないということです.JSFには検証がありません。フォームを送信できません。 actionListenerを呼び出します。

可能性のある問題は何ですか????? ..データ型ですか?またはその他の問題?? ... は....あなたのコメントから

+0

正確に? ''に入力されたテキストをJavaの 'Date'データ型に変換しますか?あるいは、 '' onChange() 'イベントに' onChange() 'イベントがあるたびにBeanのメソッドを呼びたいでしょうか? –

+0

をページに追加し、検証エラーが発生しているかどうかを確認します(またはサーバーログを確認するだけで、検証エラーがログに記録されます)。 – Andrey

+0

@ken chan私の基本的な必要性は、inputTextユーザーが整数値を入力することです...そしてrich:日付型の場合、彼はカレンダーから日付を選択します... onchangeイベントはなく、すべての値はバッキングBeanへの中間コールはありません.... – AngelsandDemons

答えて

1

を私を導いてください、あなたがそのバッキングBeanへ<h:inputText><rich:calendar>にあなたが入力した値を設定し、Beanメソッドを呼び出すようにしたいようです<h:inputText><rich:calendar>上のonchangeイベントが

をたまたますぐにいつでも使用することができ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>、Aで起こるたびjax要求が呼び出され、action属性で指定されたメソッドが呼び出されます。ここでは、actionが呼び出される前に、コントロールに入力した値をすぐにそのバッキングBeanに設定するため、ajaxSingle属性が重要です。 rich:calendarのために、のonchangeイベントであることを

代わりの

のonchangeリファレンスをonChangedイベント:

+0

返信いただきありがとうございます。しかし、入力された値はフォーム提出時にのみバッキングBeanに入力され、ajaxコールでは入力されません...フォーム送信前に中間のajax呼び出しはありません。 をクリックすると、actionListenerが呼び出されます。このactionListenerの内部gettersを使用してこれらのフィールドの値を取得しています。ただし、問題が指定されているため、ActionListener自体がフィールド値がすべて入力されるまで呼び出されません。JSFには検証がありません。 – AngelsandDemons

+0

@ankit Ifいくつかのフィールドが空である場合、 ''のアクションは呼び出せません。そのような場合にフォームを送信できないような検証エラーがいくつかあることを意味します。 ''を追加して、検証エラーが発生していないか確認してください。 –

関連する問題