我重新创建了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
此外,有几次我能够让输入字段保持空白,但在表单提交时 - 该值已填充。
答案 0 :(得分:0)
我用h:dataTable替换了ui:repeat,用h:列包装了ace:面板,并删除了所有ace:ajax。 ace:dateTimeEntry现在按预期工作。