我正在创建一个JSP. tag文件来处理这个用例:
<my:safeParam paramName="param1" defaultValue="testvalue"/>
其中,行为将是获取请求参数,转义其值以“安全”使用,并将转义值放回某个作用域(例如请求),与参数同名(尽管它可能是另一个名称)。
我有一个可以工作的实现,但我有scriptlet,因为我找不到在JSTL中使用变量名的方法。但我不是JSTL向导,所以我想看看我是否缺少语法/方法。这是正在工作的safeParam。标签
文件:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ attribute name="paramName" required="true" %>
<%@ attribute name="defaultValue" %>
<%
String name = (String) pageContext.getAttribute("paramName");
%>
<c:if test="${not empty defaultValue}">
<%
request.setAttribute(name, pageContext.getAttribute("defaultValue"));
%>
</c:if>
<c:if test="${not empty param[paramName]}">
<c:set var="escaped" value="${fn:escapeXml(param[paramName])}"/>
<%
request.setAttribute(name, pageContext.getAttribute("escaped"));
%>
</c:if>
(我真希望艾尔能自动逃脱。)
我可能不会使用这种方法,因为它降低了我用这个自定义标记寻求的简洁性,但只是作为一个选项记录它。。。(我不确定这是否是杨富强的意思。)
我可以让标签简单地输出默认或转义的参数值,然后让标签的用户在
标签:
<c:choose>
<c:when test="${empty param[paramName]}">
${defaultValue}
</c:when>
<c:otherwise>
<c:out value="${param[paramName]}"/>
</c:otherwise>
</c:choose>
JSP:
<c:set var="myVariable">
<my:safeParam paramName="folder" defaultValue="homeFolder"/>
</c:set>
但实际上,我的目标是做标签内的所有事情。
<c:if test="${empty paramName}">
${defaultValue}
</c:if>
<c:if test="${not empty paramName}">
<c:out value="${paramName}" escapeXml="true"/>
</c:if>
除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?
我有一个javascript函数,它接受一个数组,并对该数组的每个项执行另一个函数。有很多重复的部分,所以我假设有一种更简单的递归方式来写这个: null null 数组中的每个项要么是字符串,要么是嵌套数组。字符串不必是唯一的,所以我认为我不能使用object和map()来代替。
有没有更好的方法在这个JSX片段中编写这个三元表达式?
除了把它们全部输入外,还有没有更好的方法在字符串中列出它们?
我一次又一次地进行这种测试,我觉得有一种更优雅的方法来做。 你能帮我吗?
我想使用以下循环创建一个新列。表中只有“open”和“start”列。我想创建一个新列“startopen”,如果“start”等于1,那么“startopen”等于“open”。否则,“startopen”等于此新创建列上方行中的任何“startopen”。目前,我能够通过以下方式实现这一点: 这有效,但对于大型数据集来说非常慢。是否有任何内置函数可以更快地完成此操作?