a4j:commandLink正在从xhtml中删除javascript

时间:2012-10-10 14:12:47

标签: java jsf richfaces ajax4jsf

如标题所示,当我点击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>

问候。

1 个答案:

答案 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}}吗?)。