gpt4 book ai didi

java - jsp设置变量变量名

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:44 26 4
gpt4 key购买 nike

我一直在寻找如何正确地执行此操作,但找不到有关如何操作的权威指南。

我知道您不能在标记内使用表达式,但我不确定我还打算如何处理它。

我已经看到很多关于这个的答案,但没有太多解释或帮助。

本质上我希望像下面这样的东西起作用,但显然不起作用。

<c:forEach items="${dataposition.rows}" var="lineposition" begin="0" varStatus="status">
<c:set var="name_${status.count}" value="${lineposition.value}" scope="session"/>
</c:forEach>

准确的错误信息是

"According to TLD or attribute durective in tag file, attribute var does not accept any expressions"

完成此任务的正确方法是什么?

(我更改了实际代码中的变量名称,但希望您仍然明白)

如果我需要创建 Java 对象或其他东西,我对此很满意,但我需要知道如何将它们包含在我的项目中以及如何在代码中使用它们。列表之类的东西听起来不错。

我创建了一个对象来保存我的值(value)观。

<jsp:useBean id="myid" class="myclass" scope="session"/>

我想使用它,但不确定如何:

<c:forEach items="${dataposition.rows}" var="lineposition" begin="0" varStatus="status">
<%
myid.add_position(lineposition.var1, lineposition.var2, lineposition.var3, lineposition.var4, lineposition.var5);
%>
</c:forEach>

最佳答案

使用 MVC 框架将设置数据的代码与您想要呈现数据的方式分开是理想的方式。如果您有任何类型的 Controller 在呈现 JSP 之前在服务器上执行,那么我建议将您的逻辑放在那里。除了 Controller 是准备此类数据的更合适位置之外,语法几乎肯定会比您可以放在 JSP 上以完成这项工作的任何内容看起来更干净。

如果您没有 Controller 并且只使用 JSP,那么我想我会建议您编写一个标记来替换 。这不是最干净的方法,但如果 JSP 是你所坚持的,那么它对我来说似乎是一个不错的妥协(我认为它比 scriptlet 和破解 JSTL 核心 TLD 以允许在“var”属性中的表达式更好)。它会做所有与 相同的事情,除了可以编写 TLD 以允许“var”属性中的表达式。

MyTag.java

package example;

import org.apache.taglibs.standard.tag.rt.core.SetTag;

public class MySetTag extends SetTag { }

WEB-INF/my.tld

<taglib>
<tag>
<name>set</name>
<tag-class>example.MySetTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>var</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>

...
</tag>
</taglib>

rownamer.jsp

<%@ taglib prefix="my" uri="WEB-INF/my.tld"%>
<c:forEach items="${dataposition.rows}" var="lineposition" begin="0" varStatus="status">
<my:set var="name_${status.count}" value="${lineposition.value}" scope="session"/>
</c:forEach>

关于java - jsp设置变量变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24081989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com