Struts <logic:notempty>无法正常工作或bean属性没有正确写入JSP?</logic:notempty>

时间:2014-07-01 13:55:00

标签: java jsp jstl struts struts-tags

我开始修复一个我不太熟悉的程序的错误修复程序。我在其中一个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名称空间。)

2 个答案:

答案 0 :(得分:4)

标记logic:notEmpty的计算结果为true,因为您的中间名字符串包含空格。在将其返回到标记之前,您应该删除空格。最好在表单bean中执行此操作

public String getMiddleName() { return middleName != null? middleName.trim(): middleName;}   

答案 1 :(得分:1)

我怀疑你的middleName是空字符串或有空格。如果是这样,请尝试使用logic:equal匹配并打印一些字符而不是句点,看看会发生什么。如果为true,则在将middleName发送给JSP之前修剪{{1}}。