JSF:-DataType 和 Action Listener 的问题
Posted
技术标签:
【中文标题】JSF:-DataType 和 Action Listener 的问题【英文标题】:JSF:-Problem with the DataType and Action Listener 【发布时间】:2011-11-14 07:22:56 【问题描述】:我在添加两个特定组件时遇到了 dataType 组件和 ActionListener 的问题...
JSF 的代码片段是:-
<h:outputLabel value="#msg.org_SubscriberGroupId_1 " styleClass="intro" escape="false"/>
<h:outputLabel value=" : " 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=" : " 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 或 Expiry date 的数据类型上。 用户将在 closedSubscriberGroup Id 输入字段中输入整数值。
但问题是我的 actionListener 不会被触发,除非我在 closedSubscriberGroupId 的所有 5 个文本框中指定值。JSF 中没有验证。仍然不允许我提交表单并调用动作监听器。
可能是什么问题..????..是数据类型吗???还是其他什么问题???... 请指导我....
【问题讨论】:
你到底想做什么?您想将<h:inputText id="txtClosdGrup1" />
中输入的文本转换为java Date
数据类型??或者您想在<h:inputText id="txtClosdGrup1" />
上有onChange()
事件时调用bean 的方法??
将从您的评论看来,您似乎想将在<h:inputText>
和<rich:calendar>
中输入的值设置为其支持bean,并在<h:inputText>
和<rich:calendar>
上的onchange 事件发生时立即调用bean 方法
你可以使用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>
上发生onchange 事件时,将触发一个Ajax 请求以调用action
属性指定的方法。 ajaxSingle
属性在这里很重要,因为它会在调用 action
之前立即将您在控件中输入的值设置为其支持 bean。
请注意,对于 rich:calendar
,onchange 事件是 onchanged 而不是 onchange
参考:
a4j:support Demo http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/a4j_support.html【讨论】:
感谢您的回复..但是我将仅在表单提交而不是在 ajax 调用上将输入的值放入支持 bean...在表单提交之前没有中间 ajax 调用...所以输入所有值后,用户将单击<h:commandButton>
的操作,则表示您存在一些验证错误,导致您在这种情况下无法提交表单。添加<h:messages/>
,查看是否有验证错误。以上是关于JSF:-DataType 和 Action Listener 的问题的主要内容,如果未能解决你的问题,请参考以下文章
jquery li点击时添加class,并且显示对应的div,隐藏其他的div,我下面的方法太麻烦了
Spark篇---Spark中Transformations转换算子