【问题标题】:How to substring in Struts2?如何在 Struts2 中进行子串化?
【发布时间】:2011-03-15 14:27:43
【问题描述】:

如何使用 Struts2 标签库对字符串进行子串化?

这是我使用 JSTL/EL 的尝试:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<s:property value="firstName" />
<c:set var="string" value="${firstName} "/>
<c:out value="${fn:substring(string,0,5)} "/>

但这不起作用。我怎样才能达到我的要求?

【问题讨论】:

  • 我不知道 Struts2 部分,因为我不使用它。尝试将value="${firstName}" 替换为value="somestring"。如果它有效,那么事实上 Struts2 和 EL 不共享相同的范围。您想使用一个另一个,但不能同时使用。
  • 我建议你在 JSP 端使用 JQuery 来处理你的代码。
  • @kamaci:回复:“我建议你在 JSP 端使用 JQuery 来处理你的代码。” 哈哈,天大的笑话。提示:doxdesk.com/img/updates/20091116-so-large.gif

标签: java struts2 substring


【解决方案1】:

假设 firstName 是 java.lang.String 则:

<s:property value="firstName.substring(0,5)" />

【讨论】:

  • 我认为大小写错误但无法编辑。我认为正确的是substring
  • 否 - 如果 firstName 的长度小于 5,使用核心 Java String.substring() 将失败。使用 JSTL fn:substring() 不会失败。
【解决方案2】:

substring 函数仅适用于底层 Java String 对象,而不适用于我们使用它创建的 s:set 变量。 例如:

假设我有一个 (Action) 类,其中包含一个 Java 变量 email。然后我可以像这样在 JSP 文件中访问这个变量:

<s:set name="jspEmail" value="%{email}" />

如果我现在想对 @ 之前的所有内容进行子串化,我必须在 Java 变量上而不是在 JSP struts 变量上执行此操作。 像这样:

<s:set name="namepart" value="%{email.substring(0,email.indexOf("@"))}" />

然后像这样使用它:

<s:property value="%{namepart}"/>

【讨论】:

    【解决方案3】:

    您可以使用 JSP EL 将操作属性引用为 ${action.property}

    <c:out value="${fn:substring(action.firstName, 0, 5)} "/>
    

    【讨论】:

    • 请注意,使用 JSTL fn:substring(),不需要检查字符串长度。如果太小,这不会给出 StringIndexOutOfBoundsException - 不像核心 Java String.substring()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多