我开始修复一个我不太熟悉的程序的错误修复程序。我在其中一个JSP上更改了一段代码。我需要它用以下两种格式之一打印名称(取决于中间名称属性是否存在):
LastName,FirstName M。
LastName,FirstName
我相信我的代码应该打印中间的首字母和句点,当且仅当该属性存在时,但对于列表中的每个名称,它会打印:
LastName,FirstName。
它打印中间的初始或中间的初始值为空字符串,后跟句点。
相关代码如下:
<html:link styleClass="recordLink" action="/secure/admin/users?actionMethod=details" paramId="userId" paramName="users" paramProperty="userId">
<bean:write name="users" property="lastName"/>,
<bean:write name="users" property="firstName"/>
<logic:notEmpty name="users" property="middleName">
<bean:write name="users" property="middleName"/>.
</logic:notEmpty>
</html:link>
为什么<logic:notEmpty>
标记不起作用?如果属性不存在,middleName
属性是否可以确定为非空?我的语法有问题吗?
我也试过使用JSTL标签,但我无法在OC4J中使用它(错误:“http://java.sun.com/jsp/jstl/core”不是注册的TLD名称空间。)
答案 0 :(得分:4)
标记logic:notEmpty
的计算结果为true,因为您的中间名字符串包含空格。在将其返回到标记之前,您应该删除空格。最好在表单bean中执行此操作
public String getMiddleName() { return middleName != null? middleName.trim(): middleName;}
答案 1 :(得分:1)
我怀疑你的middleName
是空字符串或有空格。如果是这样,请尝试使用logic:equal
匹配并打印一些字符而不是句点,看看会发生什么。如果为true,则在将middleName
发送给JSP之前修剪{{1}}。