Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts2-如何使用<;s:url>;内部<;选择>;创建超链接?_Java_Jsp_Struts2_Enums_Struts Tags - Fatal编程技术网

Java Struts2-如何使用<;s:url>;内部<;选择>;创建超链接?

Java Struts2-如何使用<;s:url>;内部<;选择>;创建超链接?,java,jsp,struts2,enums,struts-tags,Java,Jsp,Struts2,Enums,Struts Tags,我有一个,我希望生成的选项的值属性等于映射到枚举中的链接 枚举: public enum LinksRelatorios { 1("One", "/reports", "inicializeReportOne", "PROJECT"), 2("Two", "/reports", "inicializeReportTwo", "PROJECT"), 3("Three", "/reports", "inicializeReportThree", "PROJECT"),

我有一个
,我希望生成的选项的值属性等于映射到枚举中的链接

枚举:

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;
    }
@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;
    }
}
例如,我想做的是每个选项都有一个
的值

标记为我生成一个带有项目上下文和操作扩展名的URL,这就是我需要它的原因,这样就不会在枚举中硬编码这些信息

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

动作:

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;
    }
@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;
    }
}
我在谷歌上搜索过,但没有找到任何结果


我已经阅读了中的在线官方文档,但与PrimeFaces或RichFaces等构建了自己展示平台的框架相比,示例部分实际上相当糟糕。

我不认为我尝试使用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>

确保可以在迭代器中使用s:url标记上的“var”属性,然后根据需要引用该属性。是的,struts2标签是可能的,但您的解决方案没有任何问题。这很明显/可读,这才是重要的。我做了所有你说的事情,除了在s:url标签上使用“var”属性。s:url位于s:iterator块内。你能把你的评论作为一个回答,以便更清楚地描述你想要描述的内容吗?