【问题标题】:Use parameter as var in c:set在 c:set 中使用参数作为 var
【发布时间】:2024-01-22 04:56:01
【问题描述】:

我正在尝试制作一个将 true/false 转换为 yes/no 的标签

我有以下标签

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@attribute name="bool"%>
<%@attribute name="varName"%>

<c:choose>
    <c:when test="${bool}">
        <c:set var="${varName}" value="Yes"/>
    </c:when>
    <c:otherwise>
        <c:set var="${varName}" value="No"/>
    </c:otherwise>
</c:choose>

这样使用

<ecas:yesNo bool="${propCrse.topicsCourse}" varName="proposedText"/>

但是当它被渲染时,应用程序会抛出以下错误

ERROR 02 Sep 2016 08:02:01,086 errorPage  - /WEB-INF/tags/yesNo.tag (line: 7, column: 8) According to TLD or attribute directive in tag file, attribute var does not accept any expressions

【问题讨论】:

  • 确实如此:根据标签文件中的TLD或attribute指令,attribute var不接受任何表达式

标签: jsp tags jstl


【解决方案1】:

你可以只用

${propCrse.topicsCourse?"Yes":"No"}  

<c:set var="proposedText" value='${propCrse.topicsCourse?"Yes":"No"}'/>

【讨论】:

    最近更新 更多