2012-08-06 58 views
0

好吧,我已閱讀所有關於這個問題的帖子,我找不到它。我的情況非常簡單 - 我所做的只是使用Primefaces 3.3.1和JSF 2.1來呈現登錄頁面。代碼如下:p:commandbutton不觸發actionlistener

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui" 
    xmlns:pe="http://primefaces.org/ui/extensions" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
<h:head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> 
    <title>ACME Systems - Home Page</title> 
    <style> 
    .noBorders tr, .noBorders td { 
    background: none !important; 
    border: none !important; 
} 

    </style> 
</h:head> 
<h:body> 
    <p:panel id="mainPanel" 
     style="height: 106px; height: auto !important; margin: 0 auto; min-height: 106px; position: relative; width: 960px; z-index: 100;"> 
     <h:form id="loginForm"> 
      <p:panel header="Secure Login" 
       style="padding-bottom: 40px; width: 380px;"> 
       <p:panelGrid columns="2" styleClass="noBorders"> 
        <h:outputText value="Username:" /> 
        <p:inputText id="username" required="true" 
         requiredMessage="Username is required." title="Username" 
         value="#{LoginBean.username}" /> 

        <h:outputText value="Password:" /> 
        <p:password id="password" required="true" 
         requiredMessage="Password is required" 
         value="#{LoginBean.password}" /> 
       </p:panelGrid> 
       <p:commandButton id="loginButton" value="Login" 
        actionListener="#{LoginBean.login}" 
        style="margin-top: 5px; float: right;" /> 
      </p:panel> 
     </h:form> 
    </p:panel> 
</h:body> 
</html> 

commandbutton上的actionlistener未觸發。如果我將它改爲h:commandbutton一切都很好。我寧願只使用primefaces標記,因爲它使用主題。如果我使用h:那麼我需要抓住css。有任何想法嗎?還有一件事,如果我在primefaces按鈕之前放一個h:commandbutton,然後用它來做初始觸發器,那麼primefaces按鈕就可以繼續工作:P Go figure!

+0

我以某種方式修復它。我在commandbutton中添加了一個update =並將其設置爲外部面板。我還將標籤屬性添加到輸入字段。是添加更新屬性什麼修復它或那個並添加一個id到外面板?離奇。 – 2012-08-06 14:13:24

+0

執行操作後,確實沒有更新UI,所以最終用戶根本沒有反饋(除非操作方法使用'ExternalContext#redirect()'或'NavigationHandler#handleNavigation()')。你是如何確認動作監聽者沒有開火的?你在實際的方法上加了一個調試斷點還是在那裏添加了一個記錄器?還是你只是得出結論:根據你沒有得到任何UI反饋,沒有看HTTP流量和代碼執行? – BalusC 2012-08-06 15:08:35

+0

我確實添加了一個記錄器,沒有出現任何內容。那是當我知道我通過primefaces組件做錯了事的時候。也許是爲什麼即使他們的展示示例有時也會使用自己的h標籤。在我的情況下,我想把主題中的所有內容都保存下來,否則我會使用h標籤。 – 2012-08-09 20:57:28

回答

0

由於我修好了,要關閉這個。也許有人可以在未來使用這些信息。我會確保你閱讀代碼示例Primefaces(或任何框架),並使用它們的確切代碼,直到你覺得你掌握了它。使用JSF 6年後,我仍然沒有想到像BalusC一樣:-)

相關問題