如标题所示,当我点击a4j:commandLink时,该方法执行完美并更新我需要的表。
问题是在a4j:commandLink发布到bean之后,页面的js正在消失。
编辑:要更清楚,当我的意思是js消失时,会发生的是当我在Mozilla firebug中查找页面的javascript时,它没有显示它。 这是正常的吗?我究竟做错了什么?对此最好的方法是什么?
代码是:
<h:panelGroup id="examplePanel" >
<h:panelGroup rendered="#{not empty exampleBean.list}">
<table id="listDataTable" width="100%" cellspacing="0"
cellpadding="0" border="0" style="margin-left: 0pt; width: 716px;">
<thead>
<tr>
<th>col1</th>
<th>col2</th>
<th>col3</th>
<th class="shortCol">col4</th>
</tr>
</thead>
<tbody>
<a4j:repeat value="#{exampleBean.list}" rowKeyVar="itStatus" var="item">
<tr>
<td>
<h:outputText value="#{exampleBean.exampleShow(item)}" />
</td>
<td>
<h:outputText value="#{exampleBean.exampleShow(item)}" />
</td>
<td>
<h:outputText value="#{exampleBean.exampleShow(item)}" />
</td>
<td>
<h:commandLink action="#{exampleShow(item)}" ></h:commandLink>
</td>
</tr>
</a4j:repeat>
</tbody>
</table>
</h:panelGroup>
</h:panelGroup>
<h:outputLabel value="* #{locale.name}:" />
<h:inputText value="#{exampleBean.exampleName}"
disabled="#{not exampleBean.edit}" id="exampleName" />
<div class="button search">
**<a4j:commandLink action="#{exampleBean.objetToTable}" value="#{locale.create}" render="exampleTurnPanel" ></a4j:commandLink>**
</div>
在此之前,我正在使用带有f:ajax的h:commandLink。但是有了这个,bean没有值,因为POST永远不会完成。正确的吗?
<h:commandLink action="#{exampleBean.objetToTable}" value="#{locale.create}">
<f:ajax execute="examplePanel" render="examplePanel" onevent="setExampleTableCss"/> </h:commandLink>
问候。
答案 0 :(得分:0)
我不确定您删除JavaScript究竟是什么意思,但请注意,<a4j:commandLink>
更新exampleTurnPanel
而不刷新整个页面。这意味着exampleTurnPanel
的新内容不会受到您在加载页面时执行的任何JavaScript的影响。
如果您有一些JavaScript代码会影响exampleTurnPanel
的内容,那么您应该将其放在exampleTurnPanel
内,以便在每次更新面板时运行它。或者,您可以使用oncomplete
的{{1}}属性在更新后显式调用它。
如果<a4j:commandLink>
您需要<h:commandLink>
,则不应与<f:ajax event = "action" ... />
不同(请注意<a4j:commandLink>
中的onevent="setExampleTableCss"
- 不要你需要<f:ajax>
的{{1}}吗?)。