JSP - Использование <c: set> с целью, цель - это переменная - PullRequest
0 голосов
/ 17 июня 2020

Я новичок в JSP, так что, возможно, это глупый вопрос. Я знаю, что можно использовать <c:set> как это в JSP:

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

Но это ограничивает идентификатор bean-компонента буквальным значением. Есть ли способ использовать вместо этого переменную? Примерно так:

<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"/>

1 Ответ

0 голосов
/ 17 июня 2020

попробуйте это:

<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"/>

EDIT:

После редактирования (что отличается от исходного утверждения), предлагаю использовать:

<jsp:useBean id="<%=param.name%>" class="java.util.HashMap" scope="request"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...