使用ajax更新托管bean,忽略所需的

时间:2013-10-10 15:11:16

标签: jsf-2 primefaces

我希望每次更改idOutput的值时都更新selectOneMenu,但是当它每次更改为null不同的值时,我就不能{as} { {1}}另一次,我认为这是由于null,但我不知道如何仅在ajax请求中避免验证。

以下是代码:

豆:

required="true"

XHTML:

@ViewScoped
@ManagedBean
public class ProbeNull implements Serializable
{
    private static final long serialVersionUID = 1628174277372407129L;
    private Boolean probe;
    public ProbeNull()
    {
        super();
    }
    public void show()
    {
        System.err.println("Value : " + probe);
    }
    public void save()
    {
        System.err.println("Save : " + probe);
    }
    public Boolean getProbe()
    {
        return probe;
    }
    public void setProbe(Boolean probe)
    {
        System.err.println("Setter: " + probe);
        this.probe = probe;
    }
}

如何避免它?

1 个答案:

答案 0 :(得分:0)

您可以使用两个remoteCommand标记和JavaScript来执行您想要的操作。

<p:remoteCommand name="makeSelection" process="select" update=":idOutput" />
<p:remoteCommand name="clearSelection" process="@this" update="select,:idOutput" >
    <f:setPropertyActionListener value="#{null}" target="#{probeNull.probe}" />  
</p:remoteCommand>

现在您可以决定使用javascript函数调用哪一个

<p:selectOneMenu id="select" required="true" value="#{probeNull.probe}" onchange="selectFunction(this)">
...

function selectFunction(el){
    //if el.value is empty you call clearSelection();
    //else you call makeSelection();
}

不要忘记删除<p:ajax update=":idOutput" />