【问题标题】:JSP - Using <c:set> with target, target being a variableJSP - 将 <c:set> 与目标一起使用,目标是一个变量
【发布时间】:2020-06-17 15:38:07
【问题描述】:

我是 JSP 新手,所以也许这是一个愚蠢的问题。我知道在 JSP 中可以像这样使用&lt;c:set&gt;

<jsp:useBean id="myBean" class="java.util.HashMap" scope="request"/>
<c:set target="${myBean}" property="x" value="y"/>

但这将 bean 的 id 限制为文字。有没有办法使用变量来代替?像这样的:

<c:set var="myBeanName" value="myBean" />
<jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>
<c:set target="${${myBeanName}}" property="x" value="y"/>

我知道${${}} 语法可能是错误的,只是为了给出我想要做什么的想法。可能吗?如果有,怎么做?

编辑:在这种情况下,我想分配具有不同名称的地图,并且以后能够以编程方式访问它们,而实际上并不知道它们的名称。例如假设我要分配两个地图,并且map1name,map2name在代码中的某处定义:

<jsp:useBean id="${map1name}" class="java.util.HashMap" scope="request"/>
<jsp:useBean id="${map2name}" class="java.util.HashMap" scope="request"/>
// What now? How do I access the map whose id is map1name?

我希望现在更清楚了。 :)

EDIT2:尝试了 Bashir@ 解决方案,我收到以下错误:

An error occurred at line: 5 in the jsp file:
Syntax error on token "$", = expected after this token
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error on token(s), misplaced construct(s)
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error on token ";", enum expected after this token
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error on token "}", Expression expected after this token
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error, insert ") Statement" to complete IfStatement
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error on tokens, EnumHeader expected instead
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error on token "}", invalid VariableDeclaratorId
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error, insert "Identifier (" to complete MethodHeaderName
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error, insert ")" to complete MethodDeclaration
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error, insert ";" to complete MethodDeclaration
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error, insert "}" to complete ClassBody
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error, insert "}" to complete EnumBody
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error on tokens, EnumHeader expected instead
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error on token ",", invalid (
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

An error occurred at line: 5 in the jsp file:
Syntax error, insert "AssignmentOperator Expression" to complete Expression
4: <c:set var="myBeanName" value="${param.name}" />
5: <jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>

【问题讨论】:

  • 你能解释更多你想要做什么吗?举个例子
  • @Bashir 提供的示例,我希望现在更清楚了。
  • 谢谢,希望我的回答对你有帮助
  • 它对你有用吗?
  • 抱歉我还没试过。我现在正在编写代码,然后将其部署到我的服务器:)

标签: java jsp jstl


【解决方案1】:

试试这个:

<c:set var="myBeanName" value="myBean" />
<jsp:useBean id="${myBeanName}" class="java.util.HashMap" scope="request"/>
<c:set target="${pageScope[myBeanName]}" property="x" value="y"/>

如果 JSTL 变量来自请求,请使用:

<c:set target="${requestScope[myBeanName]}" property="x" value="y"/>

编辑:

在您编辑后(与最初的声明不同),我建议使用:

<jsp:useBean id="<%=param.name%>" class="java.util.HashMap" scope="request"/>

【讨论】:

    猜你喜欢
    • 2021-04-13
    • 2018-02-15
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多