Primefaces - 验证失败时切换的所有内容

时间:2013-03-22 21:58:38

标签: jsf jsf-2 primefaces

我正在使用JSF 2.1和primefaces 3.5。假设我有以下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
<h:head>
  <title>Web application</title>
</h:head>
<h:body>
    <h1>Editor</h1>
    <h:form>
    <p:wizard>
        <p:tab title="Edit">
            <h2>Edit:</h2>
            <p:dataTable value="#{editorBean.applications}" var="app">
                <p:column headerText="Id">
                    <p:inplace emptyLabel="Value not assigned" editor="true" effectSpeed="fast">
                        <p:inputText value="#{app.id}" />
                    </p:inplace>
                </p:column>
                <p:column headerText="Name">
                    <p:inplace emptyLabel="Value not assigned" editor="true" effectSpeed="fast">
                        <p:inputText value="#{app.name}" required="true" />
                    </p:inplace>
                </p:column>
            </p:dataTable>
        </p:tab>
        <p:tab title="Summary">
            <h2>Summary:</h2>
            <p:dataTable value="#{editorBean.applications}" var="app">
                <p:column headerText="Id">#{app.id}</p:column>
                <p:column headerText="Name">#{app.name}</p:column>
            </p:dataTable>
        </p:tab>
    </p:wizard>
    </h:form>
</h:body>
</html>

当我在向导上按下一步,验证失败(应用程序名称为空白)时,页面上包含的所有内容都将切换到编辑器模式。 我认为不应该切换它们,因为当您接受此输入的编辑器时,将执行每个输入的验证。

screenshot

看起来很糟糕,特别是我有很多地方。

我想在验证失败时禁用每个inplace编辑器的切换。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是因为p:inplace组件不是为了这个用途而制作的。在像inplace这样的数据表中使用时,很少有其他组件会产生问题,但是对于您的要求,这可能很有用:

<p:column headerText="Year" style="width:25%">
        <p:cellEditor>
            <f:facet name="output"><h:outputText value="#{car.year}" /></f:facet>
            <f:facet name="input"><p:inputText value="#{car.year}" style="width:96%"     label="Year"/></f:facet>
        </p:cellEditor>
</p:column>

您可以查看primefaces showcase的完整示例。