2011-06-09 17 views
7

Tek sayfada JSF 2.0 ile birden çok form kullanmaya çalışıyorum. PrimeFaces 3.0M1 kullanıyorum ve sekmelerle ve sekme başına bir formla bir uygulama oluşturmaya çalışıyorum.JSF 2.0 ile tek bir sayfada birden çok form nasıl kullanılır?

aşağıdaki gibi bir sayfa var:

<html xmlns="http://www.w3.org/1999/xhtml" 

xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"     
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
xmlns:p="http://primefaces.prime.com.tr/ui"> 

<div> 
<p:tabView> 
<p:tab title="Form1"> 
<h:form id="form1"> 
    <p:inputText id="txtInput" value="#{bean1.inputText}" /> 
    <p:commandButton title="Submit" value="Submit" actionListener="#{controller1.submitValues}"> 
</h:form> 
</p:tab> 
<p:tab title="Form2"> 
<h:form id="form2"> 
    <p:inputText id="txtInput2" value="#{bean2.inputText}" /> 
    <p:commandButton title="Submit" value="Submit" actionListener="#{controller2.submitValues}"> 
</h:form> 
</p:tab> 
</p:tabView> 
</div> 
</html> 

ben sekmesi 1'de Gönder düğmesini tıklarsanız, her şey excpected gibi çalışır. Ancak, ikinci sekmedeki düğmeye tıklarsam, komut denetleyici2'de yürütülmez.

Burada sorun nedir? Düğme2'nin yürütme komutunu düğme1'e bağlarsam, denetleyici2'deki komut doğru şekilde yürütülür, bu nedenle destek çekirdeklerinde bir sorun olduğunu göz ardı edebilirim.

Bunu nasıl çözebilirim?

cevap

1

Primefaces sihirbazı ve sekme bileşenleri, tek bir formda eklenmelidir.

Böyle bir sekme veya sihirbaz içinde birden çok Gönderme düğmesinin bulunamaması için bir neden yoktur. Bu durumdaki kafa karışıklığınız, yönetilen çekirdeğinizin şu anda görüntülenen sekmede görünmeyen diğer özellikleriyle ilgili endişeleriniz olması nedeniyle olasıdır.

+0

: Böyle <ui:repeat> etiketinde <h:form> etiketi koy? Örneğin, alanlara gereksinim duyduğumda, bir sonraki sekmeye geçmeme izin vermez, çünkü hepsi aynı formdadır – Erick

1

Ben bir düğmeye

bu deneyin bir "sürecini" özelliğini belirtmek için gidebilir. senin <h:form> etiketi değiştirmek ve <h:panelGrid> ile değiştirin ve form1 ve form2 olarak kimliklerini vermek ve bu çalışacaktır bu

<p:commandButton title="Submit" value="Submit" actionListener="#controller1.submitValues}" process="@this,form1"> 

<p:commandButton title="Submit" value="Submit" actionListener="#controller2.submitValues}" process="@this,form2"> 

gibi 2 düğmelerini değiştirmek . :) Beni beğenmenizin bir sonucu ile beni güncelleyin

+0

i dialogda dinamik = "true" ifadesini ekledim ve iletişim kutusunun içinde form tuttum. konu. – tom

0

Öğelerin bir listesini oluşturabilir ve destek fasulyenize göz atmak istediğiniz değerlere göre doldurabilirsiniz. Ben sadece tüm sihirbazı bir form varsa ben her bir ayrı formda istemci tarafı doğrulamaları gönderildikten yok ki, nasıl

<ui:repeat var="item" value="#{backingBean.items}"> 
    <h:form> 
    Put here the content of your form 
    </h:form> 
</ui:repeat> 
<p:commandButton value="Submit" action="desired action"/> 
İlgili konular