【问题标题】:How to access widgets from ManagedBean如何从 ManagedBean 访问小部件
【发布时间】:2013-06-23 14:35:32
【问题描述】:

使用 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) 文件中读取两个 'ID' 或 'WIdgetVars' 以添加它们并稍后减去它们并将值存储回 'SUM' 和 'DIFFERENCE'?

提前谢谢你!

-V

【问题讨论】:

  • 这也可以这样实现:
  • 您的问题留下了很多想象空间。 “SUM”和“DIFFERENCE”应该是什么?通过阅读widgetVar,您是指组件上widgetVar属性的实际值还是由各自widgetVar标识的组件的value?
  • @kolossus SUM 和 DIFFERENCE 是输出文本字段。通过读取widgeteVar,我的意思是读取它所标识的组件的值。

标签: jsf jsf-2 primefaces primefaces-extensions


【解决方案1】:

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

在你的支持 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。 但这仅在您仅在 backing 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 2012-03-04
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    相关资源
    最近更新 更多