为每个结果发送一个参数

时间:2013-05-18 22:41:29

标签: java jsp parameters struts2 actionresult

我想为每个结果发送一个特定的参数。

struts.xml

<action name="modifierPara" method="modifierPara"
        class="ma.ensao.evalmetrics.view.ParametrageAction">
  <interceptor-ref name="loginStack" />
  <result name="ssCara">
    <param name="etat">ssCara</param>
    /WEB-INF/admin/projets/parametrer/modifierSubCara.jsp
  </result>

  <result name="metric">
    <param name="etat">metric</param>
    /WEB-INF/admin/projets/parametrer/modifierMetric.jsp
  </result>
</action>

取决于etat的值,我将使用不同的参数执行linkController.modifier

ma.ensao.evalmetrics.view.ParametrageAction

public class ParametrageAction extends ActionSupport {

    private static final long serialVersionUID = 9149826260758390091L;
    private Parametrage para;
    private Long id;
        private ParaManager linkController;
        private String etat;
        private String etatSuivant;


    public ParametrageAction() {
        linkController = new ParaManager();
    }

    public String getSpecificPara() {
        try {
            this.setPara(linkController.getSpecificPara(getId()));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return SUCCESS;
    }
    public String modifierPara() {

        try {
            if (etat.equals("cara")){
                linkController.modifier(para,"cara");
                etatSuivant= "ssCara";
            }else if(etat.equals("ssCara")){
                linkController.modifier(para,"ssCara");
                etatSuivant="metric";
            }else if(etat.equals("metric")){
                linkController.modifier(para,"metric");
                etatSuivant="SUCCESS";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("coucouuuuu from parm action");
        return etatSuivant;
    }
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public ParaManager getLinkController() {
        return linkController;
    }

    public void setLinkController(ParaManager linkController) {
        this.linkController = linkController;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }

    public Parametrage getPara() {
        return para;
    }

    public void setPara(Parametrage para) {
        this.para = para;
    }

    public String getEtat() {
        return etat;
    }

    public void setEtat(String etat) {
        this.etat = etat;
    }
}

2 个答案:

答案 0 :(得分:0)

(事实证明,OP希望将数据发送到Action,而不是发送给JSP。留下这个答案,因为它是比使用XML配置更好的将数据发送到JSP的解决方案,这是不必要的,并且与S2应用程序的方式相反通常是写的。)

如果默认结果类型是“dispatcher”(正常默认值),则不需要“发送”。

公开名为"etat"的动作属性,并在JSP中引用它。

动作类

public class AnAction extends ActionSupport { // Extending is optional
    private String etat;
    public String getEtat() { return etat; }
    public String modifierPara() {
        etat = whatever();
        return appropriateResult();
    }
    // etc.
}

<强> JSP

${etat} Or...
<s:property value="%{etat}" /> Etc.

适当的命名消除了大量的结果配置:

<result>/WEB-INF/admin/projets/parametrer/modifier_${etat}.jsp</result>

答案 1 :(得分:0)

要发送带有结果的参数,您需要将参数location添加到result标记中,该标记将包含调度程序要定位的资源的值。然后添加自己的参数。例如

<result name="ssCara">
  <param name="etat">ssCara</param>
  <param name="location">/WEB-INF/admin/projets/parametrer/modifierSubCara.jsp</param>    
</result>