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>
Pouvez-vous poster votre struts.xml. J'ai besoin de vérifier votre action et intercepteur –
supprimer 'ModelDriven' des interfaces implémentées –
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 ... –