2013-03-22 62 views
3

我正在使用JSF 2.1和primefaces 3.5。比方說,我有一個下面的代碼:Primefaces - 當驗證失敗時,所有插入都會切換

<!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> 

當我按下向導未來,並且驗證失敗(應用程序名稱爲空)則包含頁面上所有inplaces被切換到編輯模式。 我認爲他們不應該切換,因爲每次輸入的驗證都會在您接受此輸入的編輯器時執行。

screenshot

它看起來太可怕了,特別是我有很多inplaces的。

我想在驗證失敗時禁用每個就地編輯器的切換。有沒有人有如何解決這個問題的想法?

回答

1

這是因爲p: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檢查完整的例子。

+0

如果我想在中進行編輯,該怎麼辦?在那裏使用是不可能的。 – Konrad 2013-03-23 13:06:07

+0

我還沒試過,但應該可以。 – 2013-03-23 13:16:33