在jsf中单击commandLink时显示隐藏inputTextarea

时间:2013-07-24 07:22:07

标签: jquery jsf jsf-2 xhtml

单击commandLink时,inputTextArea应出现/ render。 这是我正在尝试的代码 -

<h:form id="MyForm">
<p:commandLink id="OnUseLink" style="text-align: right; vertical-align: bottom;">
 <p:ajax event="click" render=":MyForm:OnUse" ></p:ajax>
 <h:graphicImage styleClass="rollover imgAligntop" style="border:none;" name="plus.gif" library ="images"/>
</p:commandLink>

<p:inputTextarea id="OnUse" size="15"></p:inputTextarea>
</h:form>

有人请帮忙。

2 个答案:

答案 0 :(得分:1)

客户端解决方案

要显示/隐藏元素,请在客户端代码中使用纯JavaScript / jQuery(示例)/其他JS库:

<p:commandLink value="Toggle" onclick="$('#MyForm\\:OnUse').toggle('slow'); return false;" />

服务器端解决方案

要启用/禁用,或渲染/不渲染,请在服务器代码中添加适当的标记条件:

<p:commandLink value="Toggle" action="#{bean.action}" update="placeholder" />
<h:panelGroup id="placeholder" layout="block">
    <p:inputTextarea id="OnUse" size="15" rendered="#{bean.rendered}" disabled="#{bean.disabled}" />
</h:panelGroup>

with bean:

@ManagedBean
@ViewScoped
public class Bean implements Serializable {
    private boolean rendered = true;//getter
    private boolean disabled = false;//getter
    public String action {
        //use some model condition to derive new rendered property value
        rendered = !rendered;//or disabled = !disabled;
        return null;
    }
}

请务必了解客户端/服务器代码的区别。另请注意,JSF组件的设置属性仅在服务器上完成,否则,如果您决定通过JavaScript更改它们,则更改将不起作用。

答案 1 :(得分:0)

您不需要p:ajax来更新组件 命令按钮本身有一个更新属性 完成此方案的常用方法是将TextArea放在PanelGroup中 更新面板组&amp;将呈现应用于组件。

以相同的形式不需要引用组件的 id附加到表单ID [formID:componentId] >。

试试这个:

<强> ToggleBean.java

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@ViewScoped
public class ToggleBean implements Serializable {

    private boolean renderer=false;

    public boolean isRenderer() {
        return renderer;
    }

    public void setRenderer(boolean renderer) {
        this.renderer = renderer;
    }

    public void buttonAction(){
        renderer = !(renderer);
    }

}

XHTML页面

<h:form id="MyForm">
            <p:commandLink id="OnUseLink" style="text-align: right; vertical-align: bottom;" action="#{toggleBean.buttonAction}" value="click" update="usePanelGroup">
                <h:graphicImage styleClass="rollover imgAligntop" style="border:none;" name="plus.gif" library ="images"/>
             </p:commandLink>

            <h:panelGroup id="usePanelGroup">
                <p:inputTextarea id="OnUse" size="15" rendered="#{toggleBean.renderer}" ></p:inputTextarea>
            </h:panelGroup>

        </h:form>
祝你好运。