Jsf 如何从ManagedBean访问小部件

Jsf 如何从ManagedBean访问小部件,jsf,jsf-2,primefaces,primefaces-extensions,Jsf,Jsf 2,Primefaces,Primefaces Extensions,使用Primefaces 3.1.1 我想加上两个日期值,减去两个日期值 <p:calendar widgetVar="Var1" id="ID1" value="#{Bean.Till}" pattern="HH:mm" timeOnly="true" mode="popup" showOn="button"> <p:calendar widgetVar="Var2" id="ID2" value="#{Bean.Late}" pattern="HH:mm" timeOnl

使用Primefaces 3.1.1

我想加上两个日期值,减去两个日期值

<p:calendar widgetVar="Var1" id="ID1" value="#{Bean.Till}" pattern="HH:mm" timeOnly="true" mode="popup" showOn="button">

<p:calendar widgetVar="Var2" id="ID2" value="#{Bean.Late}" pattern="HH:mm" timeOnly="true" mode="popup" showOn="button">

单击submit按钮即可调用托管bean

<h:commandButton value="Save" action=" #{timePickingBean.submitMethod}" >
<f:ajax execute="@form" render="SUM DIFFERENCE" />
</h:commandButton>

我的问题是:如何从managedbean(.java)文件中读取两个“id”或“WIdgetVars”,然后将它们相加和相减,并将值存储回“SUM”和“DIFFERENCE”中

提前谢谢你


-V

您可以将日历绑定到标识为timePickingBean的支持Bean

大概是这样的:

<p:calendar widgetVar="Var1" id="ID1" value="#{Bean.Till}" pattern="HH:mm" timeOnly="true" mode="popup" showOn="button" binding="#{timePickingBean.calendar1}"></p:calendar>

<p:calendar widgetVar="Var2" id="ID2" value="#{Bean.Late}" pattern="HH:mm" timeOnly="true" mode="popup" showOn="button" binding="#{timePickingBean.calendar2}"></p:calendar>
不要忘记控制null值以及getter和setter。 但是,只有当您只在支持bean中需要这些日历,而不是在其他地方需要这些日历时,这才有用

另一种方法是使用PrimeFaces中的datechange事件触发计算。在这种情况下,在更改calendar 2的值时调用支持bean(您可以为calendar 1包含相同的值):



这也可以通过以下方式实现:你的问题留给了你很多想象空间。“和”和“差”应该是什么?通过读取widgetVar,您是指组件上的
widgetVar
属性的实际值还是由其各自的
widgetVar
标识的组件的
value
?@kolossus SUM和DIFFERENCE是输出文本字段。通过读取widgeteVar,我的意思是读取由它标识的组件的值。
public class TimePickingBean {
 private org.primefaces.component.calendar.Calendar calendar1;
 private org.primefaces.component.calendar.Calendar calendar2;

 public void  submitMethod(AjaxBehaviorEvent event) {
    Date cal1 = (Date)calendar1.getValue();
    Date cal2 = (Date)calendar2.getValue();
    do some stuff...
 }
}
<p:calendar widgetVar="Var2" id="ID2" value="#{Bean.Late}" pattern="HH:mm" timeOnly="true" mode="popup" showOn="button" binding="#{timePickingBean.calendar2}">
   <f:ajax event="dateSelect" execute="@form" render="SUM DIFFERENCE" action="#{timePickingBean.submitMethod}" ></f:ajax>
</p:calendar>