2011-09-10 35 views
1

我現在面臨與數據類型和組件的ActionListener上增加兩個特定組件有問題......JSF: - 問題與數據類型和動作偵聽器

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次......用不同的ID ...和不同的索引...

我支持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或到期日期的數據類型。 用戶將在closedSubscriberGroup Id輸入字段中輸入整數值。

但問題是,我的actionListener沒有被解僱,除非我指定了所有5個文本框中的值closedSubscriberGroupId ..沒有驗證是否存在JSF.Still它不允許我提交表單和調用actionListener。

什麼可能是可能的問題..是..它的數據類型?或任何其他的問題?... 請指引我....

+0

你想要做什麼究竟?您希望將輸入到<'中的文本轉換爲Java'Date'數據類型?或者,當'''上有'onChange()'事件時,您想調用bean的方法。 –

+0

添加到頁面並檢查是否有任何驗證錯誤發生(或者只是查看服務器日誌,驗證錯誤應記錄在那裏)。 – Andrey

+0

@ken chan我的基本需求是,在inputText中,用戶將輸入整數值...而對於rich:date類型,他將從日曆中選擇一個日期...沒有onchange事件,所有值都傳遞給只有在提交表單時才支持bean ...沒有中間調用Backing Bean .... – AngelsandDemons

回答

1

從您的評論,似乎要置你於<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> 

這意味着,只要平變化的事件發生在<h:inputText><rich:calendar>,一個A jax請求將被觸發以調用action屬性指定的方法。 ajaxSingle屬性在這裏很重要,因爲它將在調用action之前將您在控件中輸入的值立即設置爲其後備bean。

注意,對於rich:calendar,onchange事件是調用onChanged,而不是平變化

參考:

+0

感謝您的答覆..但是,我會將輸入的值只在表單提交中輸入值,而不是在ajax調用中...在表單提交之前沒有中間的ajax調用...所以在輸入所有值後,用戶將點擊,actionListener將被調用。在這個actionListener裏面,我使用getters獲取這些字段的值。但是由於指定的問題,我的ActionListener本身並沒有被調用,直到所有的字段值都被輸入了。沒有驗證在我的JSF上。 – AngelsandDemons

+0

@ankit If如果某些字段爲空,那麼不能調用''的動作,這意味着您有一些驗證錯誤會阻止您在這種情況下提交表單。添加''查看是否有任何驗證錯誤發生。 –