2

我开始为我不太熟悉的程序修复错误。我已经更改了其中一个 JSP 上的一段代码。我需要它以以下两种格式之一打印名称(取决于中间名属性是否存在):

姓,名 M。

姓,名

我相信我的代码应该打印中间首字母和句点当且仅当该属性存在时,但对于列表中的每个名称,它都会打印:

姓,名。

它打印没有中间首字母或空字符串的中间首字母,后跟句点。

相关代码如下:

<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 命名空间。)

4

2 回答 2

5

该标签的logic:notEmpty计算结果为 true,因为您的中间名字符串包含空格。在将空格返回给标签之前,您应该去掉空格。最好以 bean 的形式进行

public String getMiddleName() { return middleName != null? middleName.trim(): middleName;}   
于 2014-07-01T14:24:27.160 回答
1

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

于 2014-07-01T14:21:18.913 回答