1

我正在尝试使用<p:resetInput>它所代表的含义。这工作正常,直到我用@org.springframework.stereotype.Controller.

XHTML 页面:

<h:form id="form" prependId="true">
        <p:panel id="panel" header="New" style="margin-bottom:10px;" toggleable="true" toggleOrientation="horizontal">  
            <h:panelGrid id="panelGrid" columns="3" cellpadding="5">
                <h:outputLabel for="txtName" value="State *" />
                <p:inputText id="txtName" value="#{testManagedBean.txtName}" label="Name" required="true" maxlength="45">
                    <f:validateLength minimum="2" maximum="45" />
                </p:inputText>
                <p:message for="txtName"/>                    
            </h:panelGrid>

            <p:commandButton id="btnSubmit" update="panel" actionListener="#{testManagedBean.submit}" type="submit" ajax="true" value="Save" icon="ui-icon-check"/>

            <p:commandButton value="Reset" update="panel" process="@this">  
                <p:resetInput target="panel" />  
            </p:commandButton>
        </p:panel>
</h:form>

JSF 托管 bean:

@ManagedBean
@RequestScoped
public final class TestManagedBean
{
     private String txtName;

     //Setters and getters.
}

当我有这样注释的 JSF bean 时@Controller

@Controller
@ManagedBean
@RequestScoped
public final class TestManagedBean
{
     private String txtName;

     //Setters and getters.
}

这不起作用,并且当按下重置值的按钮时,唯一 UIInput 组件的值<p:inputText>不会重置为。null


这甚至不适用于actionListenerlike,

<p:commandButton value="Reset" update="panel" process="@this" actionListener="#{testManagedBean.reset()}" >  
    <p:resetInput target="panel" />  
</p:commandButton>

在 JSF 托管 bean 中,该reset()方法定义如下。

public void reset()
{
    RequestContext.getCurrentInstance().reset("form:panel"); 
}

因此,最后,我只在托管 bean 中留下了以下选项。

public void reset()
{
    txtName=null;
}

手动重置值。

有没有办法<p:resetInput>按照它的意思进行工作?

4

1 回答 1

0

这行得通,当我像这样更改托管bean时,

@Controller
@Scope("view")
public final class testManagedBean extends LazyDataModel<Bean> implements Serializable
{
    private String txtName; //Getter and setter.
}

正如评论所暗示的那样。之后,视图范围被定义为这个博客所指示的。

<p:commandButton id="btnSubmit" update="panel" actionListener="#{testManagedBean.submit}" icon="ui-icon-check" type="submit" ajax="true" value="Save"/>

<p:commandButton value="Reset" update="panel" process="@this">
    <p:resetInput target="panel" />
</p:commandButton>

actionListener在这种情况下是不必要的。因此,它已从重置按钮中删除。

我刚刚通过剪切和粘贴问题中的最后一个编辑来回答,以从未回答的问题列表中删除该问题。

于 2014-06-19T18:25:55.887 回答