ace:dateTimeEntry在ui中的值:重复再现和/或不通过ace清除:手动输入的ajax

时间:2015-03-11 16:50:23

标签: ajax jsf icefaces-3

我重新创建了ace:dateTimeEntry - AJAX Submit Example并取得了成功;然而,一旦我在一个ui:repeat中包装ace:dateTimeEntry,功能似乎停止了。

整体问题:
当在ui:repeat内时,如果用户选中了ca_input(ace:dateTimeEntry),则ace:dateTimeEntry和ice:outputText的值将重新出现,或者在AJAX dateTextChangeListener触发后提交表单(通过System见证)。所有组件的ID都是通过FireBug和/或Firefox检查元素找到的,并且在其他帖子指示的情况下被放入ajax中 - 但是,仍然没有运气。
/>

任何想法都会受到赞赏。


环境信息
-ICEFaces 3.3.0
-JSF 2.0
-JBoss Application Server

目录结构
-layout.xhtml
--main.xhtml(有<ice:form>
--- date.xhtml


Date.xhtml - 不工作示例

 <div>
  <ui:repeat id="toast" value="#{backingBean.currentDetails}" var="row">
   <ace:panel>

    <ice:panelGrid width="100%">
     <ice:panelGroup>
      <ice:outputLabel for="text" value="Selected Date: "/>
      <ice:outputText id="text" value="#{backingBean.selectedDate}">
       <f:convertDateTime pattern="MMMM dd, yyyy"/>
      </ice:outputText>
    </ice:panelGroup>

    <ice:panelGrid width="100%">
     <ace:dateTimeEntry id="cal" value="#{backingBean.selectedDate}">
      renderAsPopup="true"
      timeZone="Canada/Mountain"
      pattern="MMM/dd/yyyy">
       <ace:ajax event="dateSelect" listener="#{backingBean.dateSelectListener" render=":mainForm:toast:0:cal :mainForm:toast:0:text"/>
       <ace:ajax event="dateTextChange" listener="#{backingBean.dateTextChangeListener" render=":mainForm:toast:0:cal :mainForm:toast:0:text"/>
      </ace:dateTimeEntry>
     </ice:panelGrid>

    </ace:panel>
   </ui:repeat>
  </div>

Date.xhtml - 工作示例

<div>
 <ace:panel>

  <ice:panelGrid width="100%">
   <ice:panelGroup>
    <ice:outputLabel for="text" value="Selected Date: "/>
    <ice:outputText id="text" value="#{backingBean.selectedDate}">
     <f:convertDateTime pattern="MMMM dd, yyyy"/>
    </ice:outputText>
   </ice:panelGroup>

  <ice:panelGrid width="100%">
   <ace:dateTimeEntry id="cal" value="#{backingBean.selectedDate}">
    renderAsPopup="true"
    timeZone="Canada/Mountain"
    pattern="MMM/dd/yyyy">
     <ace:ajax event="dateSelect" listener="#{backingBean.dateSelectListener" render="@this text"/>
     <ace:ajax event="dateTextChange" listener="#{backingBean.dateTextChangeListener" render="@this text"/>
    </ace:dateTimeEntry>
   </ice:panelGrid>

  </ace:panel>
 </div>

听众

public void dateSelectListener(DateSelectEvent event)
 {
  this.selectedDate = event.getDate();
 }

public void dateTextChangeListener(DateTextChangeEvent event)
 {
  this.selectedDate = event.getDate();
 }

注意
我已经使用Firefox的Inspect元素来查看id并尝试让它们返回;然而,这是不成功的。此外,当插入无法转换的值(例如abc)时,控制台输出会确认正确的id

我将@this更改为...:mainForm:toast:0:cal(也尝试过cal_input)
我将文本更改为...:mainForm:toast:0:text

我也试过..
:的MainForm:烤面包 包装ui:在带有id的h:panelGroup中重复。
切换到h:dataTable

此外,有几次我能够让输入字段保持空白,但在表单提交时 - 该值已填充。

1 个答案:

答案 0 :(得分:0)

我用h:dataTable替换了ui:repeat,用h:列包装了ace:面板,并删除了所有ace:ajax。 ace:dateTimeEntry现在按预期工作。