如何从ManagedBean访问小部件

时间:2013-06-26 12:42:02

标签: 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" timeOnly="true" mode="popup" showOn="button">

单击提交按钮即可调用托管bean。

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

我的问题:如何从managedbean(.java)文件读取两个'IDs'或'WIdgetVars'来添加它们并稍后减去它们并将值存储回'SUM'和'DIFFERENCE'?

提前谢谢!

-V

1 个答案:

答案 0 :(得分:0)

您可以将日历绑定到标识为timePickingBean的Backing 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>

在你的支持bean中:

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...
 }
}

不要忘记控制Nullvalue和getter以及setter。 但是,只有在您的支持bean中而不是其他地方需要这些日历时,这才有用。

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

<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>