2014-07-01 35 views
1

我開始修復一個程序,我對它幾乎不熟悉。我在其中一個JSP上更改了一段代碼。我需要用它來無論是以下兩種格式(取決於是否存在中間名屬性)打印名字:Struts <logic:notEmpty>不工作或bean屬性沒有正確寫入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

語法看起來很好。如果刪除notEmpty條件會發生什麼?它打印任何middleName? –

+0

它打印相同的東西。這就像中間名是空的或空的,但struts並不認爲它是。 –

+0

我甚至在''標籤周圍拋出了一個'標籤,以確保'middleName'屬性存在,並且它仍然打印出相同的事情。如果'middleName'實際上是一個'char'而不是'String',那麼這可能會導致問題? –

回答

3

標記logic:notEmpty的計算結果爲true,因爲您的中間名字符串中有空格。在將其返回到標籤之前,您應該清除空格。最好在表格bean中這樣做,就像

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

它似乎不像我的中間名字符串有空格。它打印一個空字符串或根本沒有。 –

+0

什麼都不能打印,請確保你有一個有效的字符。 –

+0

我認爲你在做某件事。我在中間名的打印處加上引號('「」。「),並打印出一個空格。 –

1

我懷疑你的middleName爲空字符串或有空間。如果是這樣,請嘗試使用logic:equal來匹配和打印某些字符而不是句點,看看會發生什麼。如果爲true,則在將其發送到JSP之前,修剪middleName

相關問題