Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用struts2标签测试字符串长度_Java_Jsp_Struts2 - Fatal编程技术网

Java 使用struts2标签测试字符串长度

Java 使用struts2标签测试字符串长度,java,jsp,struts2,Java,Jsp,Struts2,我在jsp文件中有一个字符串属性,我想显示它。如果属性的长度超过30个字符,我只想显示前30个字符。我使用了以下代码: <s:if test="%{title.length > 25}"> <s:property value="title.substring(0,25)" /> </s:if> <s:else> <s:property value="title" /> </s:else> 但是,它始终显示完整长度

我在jsp文件中有一个字符串属性,我想显示它。如果属性的长度超过30个字符,我只想显示前30个字符。我使用了以下代码:

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


但是,它始终显示完整长度的标题。我猜if条件是错误的。如何修复它?

您可以用几种方法来修复它,但这里有两种方法

来自Java

您可以在action类中创建一个名为getTrimmedTitle的函数,如下所示:

public String getTrimmedTitle(){
    if (testing.length()>25)
        return testing.substring(0,25);
    else return testing;
}
那么在jsp中只有以下内容:

<s:property value="trimmedTitle" />

来自JQuery

您可以向要编辑的字段添加id,例如“title”,并编写如下简单函数:

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

$(文档).ready(函数(){
$(“#title”).val($(“#title”).val().substr(1,25));
});

它将在每次加载页面时运行。

要从Struts2标记执行此操作:

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



谢谢,这个解决方案对我来说很有效,但我想我们不能用struts2标签来实现?我不是100%确定,但我认为没有这样的选择。没有可用于限制所用s:property标记长度的属性。如果您使用另一个标记(如s:textfield)并设置maxLength,这也不会有任何帮助,因为它会限制更多大于maxLength值的输入,因此不会修剪字符串。因此,如上图所示控制输出可能更好,我更喜欢第一个选项。@nkal有这样一种方法,请参阅我的答案。回答很好:),但现在我更喜欢使用后端代码(java)的解决方案,因为它允许我更好地自定义标题,例如添加“…”@lenhhoxung也可以通过属性标记来完成这项工作,如果您真的需要的话。这只是品味的问题。