2011-04-19 10 views
6

bu çözüm geldi: JSF'de form eylemi nasıl tanımlanır? Varsayılan Bahar güvenlik giriş formunu değiştirmek amacıyla

<form name="f" action="../j_spring_security_check" method="POST" > 
    <h:panelGrid columns="2"> 
     <h:outputText value="Username" /> 
     <h:inputText id="j_username" /> 
     <h:outputText value="Password" /> 
     <h:inputText id="j_password" /> 
    </h:panelGrid> 
    <h:commandButton value="Login" /> 
</form> 

Ama bunun yerine ben Primefaces bileşenleri sadece <h:form> içinde çalışmak beri <h:form> kullanmak istiyorum düz <form> etiketinin

. <h:form>'u kullanarak form eylemi, yukarıdaki örnekte benim tarafımdan ayarlanan değere değil, JSF tarafından geçerli sayfaya otomatik olarak ayarlanacaktır. "../j_spring_security_check" eylemini şimdi nereye yazmalıyım?

<h:form name="f"> 
    <h:panelGrid columns="2"> 
     <h:outputText value="Username" /> 
     <h:inputText id="j_username" /> 
     <h:outputText value="Password" /> 
     <h:inputText id="j_password" /> 
    </h:panelGrid> 

    <h:commandButton value="Click here" action="../j_spring_security_check" /> 
</form> 

Bu hata mesajı Unable to find matching navigation case with from-view-id '/login.xhtml' for action '../j_spring_security_check' with outcome '../j_spring_security_check' yol açar: Bu işe yaramazsa ama şöyle ben <h:commandButton> içine koyarak çalıştı.

faces-config.xml'da gezinme durumunu tanımlamanın tek yolu bu mu? Bu basit kullanım için bir fasulye kullanmaktan kaçınmak istiyorum.

action="#{managedBean.method}" 
+0

[bu yanıt bakın] (http://stackoverflow.com/questions/3807746/jsf-change-the-action-for-a-hcommandbutton-2-0/3807808#3807808): commandButton' eylemi –

+1

@Matt: Maalesef sitenin '../ j_spring_security_check' çağrılması XHTML sitesi değil. Sağladığınız bağlantı bunu varsayar. –

cevap

8

benim için en iyi çözüm yerine varsayılan <button> etiketi kullanmaktır: aşağıdaki gibi

1

eyleminizle özelliği bir EL ifadesi olmalıdır. Tipik düğme stili uygulanmadığından (benim durumumda Primefaces kullanıyorum), manuel olarak ayarladım. İşte bütün bir sonuç:

<h:outputStylesheet library="primefaces" name="jquery/ui/jquery-ui.css" /> 
    <h:outputStylesheet library="css" name="login.css" /> 

    <div class="message"> 
     <c:if test="#{param.error == 1 and SPRING_SECURITY_LAST_EXCEPTION != null}"> 
      <span class="error">#{SPRING_SECURITY_LAST_EXCEPTION.message}</span> 
     </c:if> 
    </div> 



    <div class="login"> 
     <form action="../j_spring_security_check" method="post"> 
      <h:panelGrid columns="2"> 
       <h:outputText value="Username" /> 
       <h:inputText id="j_username" /> 
       <h:outputText value="Password" /> 
       <h:inputSecret id="j_password" /> 
      </h:panelGrid> 

      <div class="submit"> 
       <button type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"> 
        <span class="ui-button-text">Login</span> 
       </button> 
      </div> 
     </form> 
    </div> 
+0

Giriş çekirdeğim için fasülyeyi tanımlamaktan kaçınmak istiyorum çünkü bu fasülye navigasyon kasasını iade etmekten başka bir şey yapmaz. –

+0

actionListener özniteliği size aynı sonucu veriyor mu? PrimeFaces bileşenlerinin eylem için EL ifadeleri gerektirdiğini düşünüyorum çünkü işe koyulmamın tek yolu buydu. Ben de bir LoginBean oluşturmalıydım. –

+0

Geri bildiriminiz için teşekkür ederiz. Giriş formumuzun daha fazla işlevselliğe ihtiyacı olduğu anda fasulye kullanacağım. Şimdilik her zamanki bir '

' etiketinden memnunum. –

7
<h:form id="login" prependId="false"    onsubmit="document.getElementById('login').action='j_security_check';"> 
+1

sadece için 'id 'seçeneğine ihtiyacınız yoktur. kullan > ' –

0

şansınızı iyi düğmeye onclick özelliğini kullanmaktır. Bu bir primefaces komutuButton ile bir örnektir, ancak (native) javascript onclick işlevini kullandığı için jsf bileşenleri için de çalışır. `H ilgili

<h:form> 
<p:commandButton value="Submit" onclick="alert('JS!')" actionListener="#{tweetBean.addTweet()}" update=":tabView,:trends,:tweetsnr" /> 
</h:form> 
İlgili konular