我正在Eclipse Juno和GlassFish 3.1.2.1中使用JSP / Servlet / JSTL开发Web应用程序。我需要实现的是找到一种方法将空字符串设置为null,例如。从另一个设置为空字符串的页面接收参数并将其检测为空。我一直在搜索,我在JSF中找到了一个参数,我把它放在 web.xml 中。
<context-param>
<param-name>
javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
</param-name>
<param-value>true</param-value>
</context-param>
但它无效。那么我在这些方面缺少什么呢?如何将空字符串设置为null?。
作为额外的注意事项,我需要设置它,因为系统将在Websphere中工作,其中空字符串被视为null。
提前致谢。
更新
另一个例子可能是这样的:
OnePage.jsp
<form action="anotherPage.jsp">
<input type="text" name="foo" id="idFoo" value="" />
</form>
anotherPage.jsp
<c:out value="${param.foo}"/>
在GlassFish 3.1.2.1中,c:out标签不会打印任何内容,因为该值设置为空字符串。 在Websphere Application Server中,该值为null。 我需要GlassFish显示空值而不是空字符串,就像Websphere那样。
答案 0 :(得分:3)
您对JSTL表达式如何工作有误解。如果变量为NULL或事件不存在,则c:out将产生NOTHING(空)。这是JSTL表达式的规范。我不明白为什么你的WebSphere产生“null”。你需要重新检查。
例如:
对于你的情况。如果要显示NULL而不是空,则需要执行以下操作:
<c:if test="${empty param.foo}">null
</c:if>
<c:if test="${not empty param.foo}">
<c:out value="${param.foo}"/>
</c:if>
或者您可以创建JSTL函数来处理这种情况:
<tf:outNullOrValue (param.foo) />
函数outNullOrValue如下:
public static String outNullOrValue(String s) {
return s == null ? "null" : s;
}
当然,您需要为函数创建TLD并在JSP中声明taglib指令。