【问题标题】:Send a parameter for every result为每个结果发送一个参数
【发布时间】:2013-05-18 22:41:28
【问题描述】:

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

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;
    }
}

【问题讨论】:

  • 编辑没有任何意义,您的结果转到 JSP,而不是操作。如果您想输入您的操作具有特定值,那么您需要将其作为参数发送到 request,而不是将值链接到 results ,发生在 动作执行之后。
  • 这正是我想要的,用特定的参数输入每个结果,但我不知道该怎么做。如您所说,如何将请求中的参数从动作发送到jsp。
  • 通过将其作为参数包含在链接中?通过定义两个动作方法并分别设置值?有几种选择。
  • @DaveNewton 我使用隐藏标签从 JSP &lt;s:hidden name="etat" value="metric"&gt;&lt;/s:hidden&gt; 发送 etat 的值,而不使用 struts.xml 中的参数,它确实有效。谢谢

标签: java jsp parameters struts2 actionresult


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    公开一个名为 "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>
    

    【讨论】:

    • 这不是我想要的,我只是编辑了我的帖子,并添加了动作类。希望你能明白我到底想要什么。
    • @dalal 我评论了你的编辑;你对请求处理的想法是倒退的。
    猜你喜欢
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多