2016-11-14 2 views
0

J'ai problème avec l'accès aux propriétés Model (ProcessSolution) dans mon JSP, je ne reçois pas ce qui ne va pas avec mes codes suivants:Struts 2: Impossible d'accéder aux propriétés du modèle en JSP

Ceci est mon modèle de classe ProcessSolution. java

package POJO; 

import java.util.Arrays; 

public class ProcessSolution { 
    private long processId; 
    private String processName; 
    private String processSolutionSteps []; 
    private String processRemark; 
    private String processNote; 

    public ProcessSolution() { 
     // TODO Auto-generated constructor stub 
    } 

    public ProcessSolution(long processId, String processName, 
      String[] processSolutionSteps, String processRemark, String processNote) { 
     this.processId = processId; 
     this.processName = processName; 
     this.processSolutionSteps = processSolutionSteps; 
     this.processRemark = processRemark; 
     this.processNote = processNote; 
    } 
    public long getProcessId() { 
     return processId; 
    } 
    public void setProcessId(long processId) { 
     this.processId = processId; 
    } 
    public String getProcessName() { 
     return processName; 
    } 
    public void setProcessName(String processName) { 
     this.processName = processName; 
    } 
    public String[] getProcessSolution() { 
     return processSolutionSteps; 
    } 
    public void setProcessSolution(String[] processSolutionSteps) { 
     this.processSolutionSteps = processSolutionSteps; 
    } 
    public String getProcessRemark() { 
     return processRemark; 
    } 
    public void setProcessRemark(String processRemark) { 
     this.processRemark = processRemark; 
    } 
    public String getProcessNote() { 
     return processNote; 
    } 
    public void setProcessNote(String processNote) { 
     this.processNote = processNote; 
    } 

    @Override 
    public String toString() { 
     return "ProcessSolution [processId=" + processId + ", processName=" 
       + processName + ", processSolutionSteps=" 
       + Arrays.toString(processSolutionSteps) + ", processRemark=" 
       + processRemark+ ", processNote=" + processNote + "]"; 
    } 
} 

Ceci est ma classe d'action ProcessSolutionAction

public class ProcessSolutionAction extends ActionSupport implements Preparable, ModelDriven<ProcessSolution>, 
            SessionAware, ServletRequestAware, ServletContextAware{ 

    private static final long serialVersionUID = 1L; 

    private ProcessSolution processSolution; 
    private ProcessService processService; 
    private short opType; 
    private String nsec; 
    private UserClass user; 
    private Jmain jmain; 
    private ProcessSolution processSolutions[]; 

    private HttpServletRequest request; 
    private Map<String, Object> sesstion; 
    private ServletContext servletContext; 

    /* (non-Javadoc) 
    * @see com.opensymphony.xwork2.Preparable#prepare() 
    */ 
    @Override 
    public void prepare() throws Exception { 
     this.processSolution = new ProcessSolution(); 
     this.jmain = new Jmain(); 
    } 
    /*public void prepareAddProcessSolution() throws Exception { 
     this.processService = new ProcessService(); 
    } 
    public void prepareListProcessSolutions() throws Exception { 
     System.out.println("prepareListProcessSolution()"); 
     this.jmain = new Jmain(); 
    } 
    public void prepareEditProcessSolution() throws Exception { 
     System.out.println("prepareEditProcessSolution()"); 
     this.jmain = new Jmain(); 
    }*/ 

    @Override 
    public ProcessSolution getModel() { 
     return this.processSolution; 
    } 

    /* (non-Javadoc) 
    * @see com.opensymphony.xwork2.ActionSupport#execute() 
    */ 
    @Override 
    public String execute() throws Exception { 
     System.out.println("ProcessSolution#execute()"); 

     /*System.out.println("Process ID :- "+this.request.getParameter("processId")); 
     System.out.println("this.processSolution Before :- "+this.processSolution); 
     if(Long.parseLong(this.request.getParameter("processId")) != 0) 
      this.processSolution = this.jmain.getProcessSolution(Long.parseLong(this.request.getParameter("processId"))); 
     System.out.println("this.processSolution After :- "+this.processSolution);*/ 
     return SUCCESS; 
    } 

    public String editProcessSolution() throws Exception { 
     System.out.println("ProcessSolution#editProcessSolution()"); 

     System.out.println("Process ID :- "+this.request.getParameter("processId")); 
     System.out.println("this.processSolution Before :- "+this.processSolution); 
     if(Long.parseLong(this.request.getParameter("processId")) != 0) 
      setProcessSolution((ProcessSolution) this.jmain.getProcessSolution(Long.parseLong(this.request.getParameter("processId")))); 
     System.out.println("this.processSolution After :- "+this.processSolution); 
     return SUCCESS; 
    } 

    public ProcessSolution getProcessSolution() { 
     return processSolution; 
    } 
    public void setProcessSolution(ProcessSolution processSolution) { 
     this.processSolution = processSolution; 
    } 
    public short getOpType() { 
     return opType; 
    } 
    public void setOpType(short opType) { 
     this.opType = opType; 
    } 
    public String getNsec() { 
     return nsec; 
    } 
    public void setNsec(String nsec) { 
     this.nsec = nsec; 
    } 
    public UserClass getUser() { 
     return user; 
    } 
    public void setUser(UserClass user) { 
     this.user = user; 
    } 
    public ProcessSolution[] getProcessSolutions() { 
     return processSolutions; 
    } 
    public void setProcessSolutions(ProcessSolution[] processSolutions) { 
     this.processSolutions = processSolutions; 
    } 

    @Override 
    public void setServletRequest(HttpServletRequest request) { 
     this.request = request; 
    } 

    @Override 
    public void setSession(Map<String, Object> sesstion) { 
     this.sesstion = sesstion; 
    } 
    @Override 
    public void setServletContext(ServletContext servletContext) { 
     this.servletContext = servletContext; 
    } 
} 

Dans editProcessSolution de la classe d'action() Je suis en mesure d'obtenir mon modèle, et obtenir imprimés correctement après appel Méthode mais pas en mesure d'accéder aux propriétés de mon modèle de classe JSP

Voici comment je l'accès aux propriétés en JSP

<s:property value="%{[0].processName}" /> 
    <s:property value="%{[1].processName}" /> 
    <s:property value="processId" /> 
    <s:property value="nsec" /> 
    <s:property value="#processSolution.processName" /> 
    <s:property value="%{processSolution.processName}" /> 
    <s:property value="processSolution.processName" /> 
    <s:property value="%{processName}" /> 
    <s:property value="processRemark" /> 
    <s:property value="processNote" /> 
    <s:property value="processSolution.getProcessName()" /> 
    <s:property value="processSolution.getProcessId()" /> 
    <s:if test="%{processName == null}"> 
     NULL 
    </s:if> 
    <s:else> 
     NOT NULL 
    </s:else> 

Quel est le problème avec mon code?

Que vous

code mis à jour

Si j'accéder à mon modèle en utilisant getter Je suis en mesure d'accéder aux propriétés du modèle

 <s:property value="getProcessSolution().getProcessName()" /> 

mais je ne peux pas directement accès Mon modèle

c'est mon xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 
    <constant name="struts.multipart.maxSixe" value="1000000"/> 

    <package name="shantaram" extends="struts-default"> 
     <!-- Process Solution Actions --> 
     <action name="load-process-solution" class="actions.ProcessSolutionAction"> 
      <result name="success">process_solution_entry.jsp</result> 
      <result name="error">Error.jsp</result> 
      <result name="login">Login.jsp</result> 
     </action> 
     <action name="list-process-solution" class="actions.ProcessSolutionAction" method="listProcessSolutions"> 
      <result name="success">process_solution_list.jsp</result> 
      <result name="error">Error.jsp</result> 
      <result name="login">Login.jsp</result> 
     </action> 
     <action name="add-process-solution" class="actions.ProcessSolutionAction" method="addProcessSolution"> 
      <result name="success">process_solution_entry.jsp</result> 
      <result name="error">Error.jsp</result> 
      <result name="login">Login.jsp</result> 
     </action> 
     <action name="edit-process-solution" class="actions.ProcessSolutionAction" method="editProcessSolution"> 
      <result name="success">process_solution_entry.jsp</result> 
      <result name="error">Error.jsp</result> 
      <result name="login">Login.jsp</result> 
     </action> 
     <action name="update-process-solution" class="actions.ProcessSolutionAction" method="addProcessSolution"> 
      <result name="success">process_solution_entry.jsp</result> 
      <result name="error">Error.jsp</result> 
      <result name="login">Login.jsp</result> 
     </action> 
     <action name="delete-process-solution" class="actions.ProcessSolutionAction" method="deleteProcessSolution"> 
      <result name="success">process_solution_list.jsp</result> 
      <result name="error">Error.jsp</result> 
      <result name="login">Login.jsp</result> 
     </action> 
    </package> 
</struts> 
+0

Pouvez-vous poster votre struts.xml. J'ai besoin de vérifier votre action et intercepteur –

+0

supprimer 'ModelDriven' des interfaces implémentées –

+0

désolé c'était mon erreur, dans Model, j'ai sur plus ** getter **' getProcessSolution() 'qui était supposé être' getProcessSolutionSteps() 'que j'ai oublié de renommer ... –

Répondre

0

Vous devez changer votre type de résultat de votre action à dispatch dans votre ProcessSolutionAction dans struts.xml.

Exemple:

<result name="success" type="dispatcher">sample.jsp</result> 

ou vous supprimez le type sur votre résultat, car la valeur par défaut de type est dispatcher

<result name="success">sample.jsp</result> 

Peut-être votre type de résultat est redirigent c'est pourquoi vous ne pouvez pas prendre valeur sur votre classe d'action à votre jsp.

+0

Êtes-vous sûr de votre syntaxe? –

+0

cette syntaxe me donne l'erreur .... –

+0

Parce que c'est faux;) –