2013-04-13 70 views
0

我有主頁index.xhtml聲明的地方放內容依賴於頁面點擊。 在primefaces中使用模板JSF

  <br> 
      <div id="centerContent"> 
     <ui:insert name="centerContent" > 
       <ui:param name="mainTag" value="" /> 
     <ui:include src="/template/commonContent.xhtml" /> 
     </ui:insert> 
       <h4>#{mainTag}</h4> 
      </div> 
      </br><br></br> 
      <p:panel id="content"> 
         <h:form> 
    <h:inputText id="namez" ></h:inputText> 
</h:form> 
      </p:panel>  
     </p:layoutUnit> 

我的模板commonContent是:

<?xml version="1.0" encoding="UTF-8"?> 
<!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" 
     > 
    <body> 
     <ui:composition> 
     <h1>Ubezpieczamy najlepiej!</h1> 
     </ui:composition> 
    </body> 
</html> 

和頁面發送電子郵件是:

<?xml version="1.0" encoding="UTF-8"?> 
<!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:h="http://java.sun.com/jsf/html" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     > 
    <h:body> 

     <ui:composition template="index.xhtml"> 

      <ui:define name="centerContent"> 
       <h2>Zapytaj</h2> 
         <h:commandButton actionListener="#{mySendBean.sendMail2()}" value="Welcome Me"> 
      </h:commandButton> 
         <ui:param name="mainTag" value="Z chęcią odpowiemy" /> 
      </ui:define> 


     </ui:composition> 

    </h:body> 

時的commandButton放在它的工作原理主要頁面,電子郵件發送,但通過模板加載它不起作用。所有的東西都有效,但不是<h:commandButton actionListener="#{mySendBean.sendMail2()}" value="Welcome Me">爲什麼在通過點擊模板加載時不起作用

bean代碼:

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.mail.*; 
import org.apache.commons.mail.DefaultAuthenticator; 
import org.apache.commons.mail.Email; 
import org.apache.commons.mail.EmailException; 
import org.apache.commons.mail.SimpleEmail; 


/** 
* 
* @author root 
*/ 
@ManagedBean 
@SessionScoped 
public class mySendBean { 

    private myEmailSend mE; 
    /** 
    * Creates a new instance of mySendBean 
    */ 
    public mySendBean() { 
     mE=new myEmailSend(); 
    } 

    private static int j; 

    /** 
    * Get the value of j 
    * 
    * @return the value of j 
    */ 
    public int getJ() { 
     return j; 
    } 

    /** 
    * Set the value of j 
    * 
    * @param j new value of j 
    */ 
    public void setJ(int j) { 
     this.j = j; 
    } 

     private String name="iop"; 

    /** 
    * Get the value of name 
    * 
    * @return the value of name 
    */ 
    public String getName() { 
     return name; 
    } 

    /** 
    * Set the value of name 
    * 
    * @param name new value of name 
    */ 
    public void setName(String name) { 
     this.name = name; 
     sendMail2(); 
    } 

    public String getSayWelcome(){ 
     //check if null? 
     if("".equals(name) || name ==null){ 
     return ""; 
     }else{ 
     return "Ajax message : Welcome " + name; 
     } 
    } 

    public void setSendMail(){ 
     sendMail2(); 
    } 
    public void sendMail2(){ 
     j=getJ(); 
     setJ(++j); 

     Email email = new SimpleEmail(); 
     try { 
     //send mail 
    } 
} 

回答

1

必須包括在<h:form>內容:

<?xml version="1.0" encoding="UTF-8"?> 
<!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:h="http://java.sun.com/jsf/html" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     > 
    <h:body> 

     <ui:composition template="index.xhtml"> 

      <ui:define name="centerContent"> 
        <h:form> 
         <ui:param name="mainTag" value="Z chęcią odpowiemy" /> 
       <h2>Zapytaj</h2> 
         <h4>#{mainTag}</h4> 
         <h:commandButton actionListener="#{mySendBean.sendMail2()}" value="Welcome Me"> 
      </h:commandButton> 
        </h:form> 
      </ui:define> 


     </ui:composition> 

    </h:body> 

</html>