Struts2 - 如何在<s:select>中使用<s:url>来创建超链接?</s:select> </s:url>

时间:2014-01-02 21:28:17

标签: java jsp struts2 enums struts-tags

我有<s:select list="links" headerKey="" headerValue="-- Select a link --" name="reportLinks" id="reportLinks" listValue="linkText" listKey="linkValue" />,我希望生成的选项的值属性等于枚举中映射的链接。

枚举:

public enum LinksRelatorios {

    1("One", "/reports", "inicializeReportOne", "PROJECT"),
    2("Two", "/reports", "inicializeReportTwo", "PROJECT"),
    3("Three", "/reports", "inicializeReportThree", "PROJECT"),
    4("four", "/reports", "inicializeReportFour", "PROJECT"),
    5("Five", "/reports", "inicializeReportFive", "PROJECT"),
    6("Six", "/reports", "inicializeReportSix", "PROJECT"),
    7("Seven", "/reports", "inicializeReportSeven", "PROJECT");

    private String linkText;
    private String nameSpace;
    private String action;
    private String project;

    private LinksRelatorios(final String textoLinkParam, final String nameSpaceParam, final String actionParam, final String projectParam) {
        this.linkText = linkTextParam;
        this.nameSpace = nameSpaceParam;
        this.action = actionParam;
        this.project = projectParam;
    }

    public String getLinkText() {
        return this.linkText;
    }

    public String getNameSpace() {
        return this.nameSpace;
    }

    public String getAction() {
        return this.action;
    }

    public String getProjeto() {
        return this.project;
    }

我想要做的是每个选项的值都是<s:url namespace="namespace" action="action" />

<s:url>标记为我生成一个包含项目上下文和动作扩展名的URL,这就是我需要它的原因,以免在枚举中对此信息进行硬编码。

我的操作是正确的,我可以毫无问题地获取枚举,我使用<s:iterator>进行了测试。

行动:

@Controller
@Scope("request")
public class InicioAction extends BaseAction {

    private static final long serialVersionUID = -1161409943678292285L;

    private static final LinksRelatorios[] links = LinksRelatorios.values();

    public String inicio() {
        this.addActionMessage(this.getText("msg.sucesso.saudacao.mensagem", new String[] { (String) BaseAction
                .getSession().getAttribute(Constantes.PERFIL) }));
        return Action.SUCCESS;
    }

    public static LinksRelatorios[] getLinks() {
        return InicioAction.links;
    }
}

我搜索过google和SO,但找不到任何结果。

我已经阅读了http://struts.apache.org/release/2.3.x/docs/using-struts-2-tags.htmlhttp://struts.apache.org/release/2.3.x/docs/a.htmlhttp://struts.apache.org/release/2.3.x/docs/url.html中的在线官方文档,但是与PrimeFaces或RichFaces等框架相比,示例部分实际上相当差。展示。

1 个答案:

答案 0 :(得分:0)

我不认为我试图做的只是使用struts标签。

所以我只是做了以下的事情:

<select id="linksInternacaoDomiciliar" name="linksInternacaoDomiciliar">
    <s:iterator value="links" var="link">
        <option value="<s:url namespace="%{#link.nameSpace}" action="%{#link.action}" />"><s:property value="textoLink"/></option>
    </s:iterator>
</select>