3

我正在使用 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>

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

截屏

它看起来很糟糕,尤其是我有很多地方。

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

4

1 回答 1

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 展示中的完整示例。

于 2013-03-22T22:13:53.550 回答