调用操作后页面不会刷新

时间:2010-10-10 15:38:38

标签: java web-applications jsf icefaces

commandLink的{​​{1}}调用方法来更改actionListener的值。相同的textcommandLink重新加载页面。当我点击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

3 个答案:

答案 0 :(得分:1)

我终于找到了溶剂。我删除了JSF 1.2 Apache Myfaces并用Sun RI jar替换。如果有人能解释它为什么有用,我会很感激。

答案 1 :(得分:0)

我不使用IceFaces,但尝试从命令链接中删除immediate="true" - 使用标准h:commandLink可能会导致问题。

答案 2 :(得分:0)

关于周期以及如何处理事件。

根据我的经验,有两种解决方法:

1)对事件进行排队(检查不同类型的事件),直到更新值为止。

2)通过使用其他标记进行陷印来解决问题