我commandLink
的{{1}}调用方法来更改actionListener
的值。相同的text
有commandLink
重新加载页面。当我点击action
时,会调用commandLink
。但是,当我刷新浏览器时,actionListener
仅完成 - 显示文本的更新值。为什么action
不会自动更新?
一些代码: 的 home.jspx
outputText
customer.jspx 相同,但(...)
<f:view>
<table id="main_table">
<tr><td width="160px"><jsp:directive.include file="./logo.jspx" /></td>
<td><jsp:directive.include file="./header.jspx" /></td></tr>
<tr><td width="160px"><jsp:directive.include file="./vertical_navigation.jspx" /></td>
<td align="center"><ice:outputText value="main" /></ice:outputText></td></tr>
</table>
</f:view>
(...)
的值为outputText
vertical_navigation.jspx :许多命令链接如下:
#{customer.text}
豆子:
(...)
<ice:form id="nav_form"><ice:panelGrid columns="1">
<ice:panelCollapsible expanded="true">
<f:facet name="header"><ice:panelGroup>
<ice:outputText value="Customer" />
</ice:panelGroup></f:facet>
<ice:panelGrid columns="1">
<ice:commandLink actionListener="#{client.defineText}"
immediate="true" action="customer" id="list">
<ice:outputText value="List" />
</ice:commandLink>
(...)
嗯,一切正常,但我点击链接时必须刷新页面,以便更新(...)
public String text;
public void defineText(ActionEvent evt) {
text = ... some text related to the link
}
public String getText() {
return text;
}
的值。我在bean方法中添加了一些text
satatements,并注意到每当我点击链接时都会调用System.out.println()
方法。但只有刷新后才会调用defineText
。输出是这样的:
getText
我正在使用 JSF 1.2 和 IceFaces 1.8.2 。
答案 0 :(得分:1)
我终于找到了溶剂。我删除了JSF 1.2 Apache Myfaces并用Sun RI jar替换。如果有人能解释它为什么有用,我会很感激。
答案 1 :(得分:0)
我不使用IceFaces,但尝试从命令链接中删除immediate="true"
- 使用标准h:commandLink
可能会导致问题。
答案 2 :(得分:0)
关于周期以及如何处理事件。
根据我的经验,有两种解决方法:
1)对事件进行排队(检查不同类型的事件),直到更新值为止。
2)通过使用其他标记进行陷印来解决问题