JEE Custom Unpackaged标签文件属性是使用表单值预先设置的

时间:2015-04-21 13:02:30

标签: jsp

我注意到我的自定义JEE解包标记属性是从jsp EL环境继承的值。有没有办法让我关掉它?这是在使用Struts 2.31的Tomcat 7.0上发生的。

这是我的用例

我的jsp正在使用" id"作为表单字段,我的按钮标记也使用" id"属性。它发生在我没有设置" id"按钮标记中的值。 " id"将继承jsp EL环境中的值。我不想要这种行为。

JSP:

<t:button type="button" onclick="...">
    <s:text name="button.label.save"/>
</t:buton>
:
:
<input name="id" id="resourcesIdCheckbox${i}" type="checkbox" value="${id}" />

WEB-INF /标签/ button.tag

<%@tag description="Button tag" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ attribute name="id" %>
<button data-dojo-type="dijit.form.Button" <c:if test="${!empty id}">id="${id}"
</c:if> ... >
:
</button>
<jsp:doBody/>
</button>

现在解决方法是设置按钮的id字段,但有时候我不想显示id字段。例如,我有8个表格,8个表格。我不想为每个按钮设置ID,减少代码。

非常感谢任何帮助。

史蒂夫

1 个答案:

答案 0 :(得分:0)

我会回答我自己的问题。如果您没有明确地将pageScope用于非必需的jsp属性,那么您的代码中会出现微妙的错误。 例如

<%@ attribute name="id" %>
<button data-dojo-type="dijit.form.Button" <c:if test="${!empty pageScope.id}">id="${pageScope.id}"

如果需要jsp标记属性,那么您不需要限定范围。 e.g。

<%@ attribute name="id" required="true" %>

我在网上看到了很多自定义标签示例而没有提到范围。我希望这有助于某人。

史蒂夫