Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
在JSTL中有条件地包装html元素_Html_Spring_Jsp_Spring Mvc_Jstl - Fatal编程技术网

在JSTL中有条件地包装html元素

在JSTL中有条件地包装html元素,html,spring,jsp,spring-mvc,jstl,Html,Spring,Jsp,Spring Mvc,Jstl,我需要在JSTL中有条件地包装html元素 例如,我需要根据条件将部分文本转换为链接,如下所示 <c:if test="${not empty link}"> <a href='${link)" target="_blank"> </c:if> ${value} <c:if test="${not empty value.link}"> </a> </c:if> 显然,上面的代码是无效的。事实上

我需要在JSTL中有条件地包装html元素

例如,我需要根据条件将部分文本转换为链接,如下所示

<c:if test="${not empty link}">
    <a href='${link)" target="_blank">
</c:if>
    ${value}
<c:if test="${not empty value.link}">
    </a>
</c:if>

显然,上面的代码是无效的。事实上,我正在寻找一些简洁的方法来做到这一点

<c:wrap_if element="a" href="${link}" target="_blank">
    ${value}
</c:wrap_if>

${value}

已经有这样的标签了吗。我应该自己写吗?或者有更好更干净的方法来实现这一点吗?

您可以通过以下构造来实现:

<c:choose>
   <c:when test="${not empty link}">
      <a href="${link}" target="_blank">${value}</a>
   </c:when>
   <c:otherwise>
      ${value}
   </c:otherwise>
</c:choose>

${value}

您也可以使用它-

    <c:set var="myHtml" value="${value}" />
    <c:if test="${not empty link}">
      <c:set var="myHtml" value="<a href='${link)' target='_blank'>${value}</a>" />
    </c:if>
    ${myHtml}

${myHtml}

为什么您的代码无效?将第二个
not empty value.link
更改为仅
not empty link
。我的代码无效,因为它不是有效的xml,不是因为我使用value.link。我相信您已经在使用最佳解决方案。我对这种方法不太满意,主要是因为我必须重复多次输出值的逻辑。如果${value}没有那么简单,那将是一个真正的难题。如果您有非简单的${value},您可以在之前计算它并将其设置为变量:。在这种情况下,最好生成一个带值的范围。如果${notempty link}为span分配特殊类。之后,编写小的jquery代码,检查该类的跨度,并用“a”元素包装它