2015-12-14 79 views
1

我有一個屬性,它是一個字符串在jsp文件中,我想顯示它。如果酒店的長度超過30個字符,我只想顯示前30個字符。我用下面的代碼:用struts2標籤測試字符串的長度

<s:if test="%{title.length > 25}"> 
<s:property value="title.substring(0,25)" /> 
</s:if> 
<s:else> 
<s:property value="title" /> 
</s:else> 

但是,它總是顯示標題的全長。我猜如果條件是錯誤的。如何解決它?

回答

3

你可以做這幾種方式,但這裏有兩個人

從Java

您可以創建一個名爲getTrimmedTitle在動作類這樣的功能:

public String getTrimmedTitle(){ 
    if (testing.length()>25) 
     return testing.substring(0,25); 
    else return testing; 
} 

然後在你的jsp上只有這個:

<s:property value="trimmedTitle" /> 

從JQuery的

您可以添加一個id例如,「標題」你要編輯,寫一個簡單的函數類似這樣的領域:每次

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#title").val($("#title").val().substr(1,25)); 
    }); 
</script> 

這將運行加載頁。

+0

謝謝解決方案適用於我,但我想我們不能Struts2的標籤做呢? – lenhhoxung

+0

我不是100%確定,但我不認爲有這樣的選擇。沒有可用的屬性限制您使用的s:property標籤的長度。如果您使用另一個標籤,如s:textfield,並設置maxLength,這將無助於限制進一步輸入大於maxLength值,它不會修剪您的字符串。所以也許它更好地控制輸出如上所示,我更喜歡第一個選項。 – thegreatdandolos

+0

@nkal有這樣一種方式,看我的答案。 – Naros

1

要從Struts2的標籤做到這一點:

<s:if test="%{title.length() > 25}"> 
    <s:property value="title.substring(0, 25)"/> 
</s:if> 
<s:else> 
    <s:property value="title"/> 
</s:else> 

<s:property value="%{title.length() > 25 ? title.substring(0,25) + '...' : title}"/> 
+0

不錯的答案:),但現在我更喜歡後端代碼(java)的解決方案,因爲它允許我更好地自定義標題,如添加「...」 – lenhhoxung

+1

@lenhhoxung也可以通過屬性標記如果你真的想要。這只是一個品味問題。 – Naros