【问题标题】:Applying OGNL expression to a context variable将 OGNL 表达式应用于上下文变量
【发布时间】:2014-11-19 11:16:29
【问题描述】:

我目前正在与 Struts2(缺乏经验的开发人员)合作,我一直在搜索,但找不到如何将 OGNL 表达式应用于存储在上下文中的变量。

问题是我需要从 Context 中检索一个参数并将其大写。到目前为止,我已经尝试过这样做,但遗憾的是没有运气:

<s:property value="#myVar.toUpperCase()" />

由于这适用于存储在 ValueStack 中的变量(不带 # 的符号),我真的不明白为什么这不适用于存储在 Context 中的任何内容..

如果我不将.toUpperCase() 附加到它,我可以很好地打印#myVar内容。

也尝试了这种解决方法,但没有帮助:

<s:property value="<s:property value="#myVar"/>.toUpperCase()"/>

那么我错过了什么?如何将 OGNL 表达式应用于存储在 Context 中的变量?

【问题讨论】:

  • 上下文中的变量是什么意思?你是怎么把它放在那里的?
  • 我已经通过隐藏参数发送它把它放在那里: 在另一个 JSP 中:&lt;s:hidden name="myVar"/&gt; 然后在 JSP 中我试图将它大写我做了以下而不是尝试访问它来自#parameters.myVar&lt;s:set var="myVar" value="%{#parameters.myVar}"/&gt;
  • 有什么理由通过#parameters获得价值?为什么不将其映射到 action 属性并从 action 中获取?
  • 我通过 #parameters 设置它,因为我认为它比在操作 .java 中声明一个新字符串更干净、更容易,因为我只需要它用于只读。无论如何,正如我所说,我是开发新手,所以任何建议/指导将不胜感激:)
  • 我不知道你的要求,但是在 action 中添加属性并没有错。

标签: variables struts2 expression ognl


【解决方案1】:

您的变量很可能不是字符串,因此其中没有 toUpperCase() 方法。解决方法是在调用toUpperCase()之前先调用toString()

<s:property value="#myVar.toString().toUpperCase()" />

更新

实际上你的问题出在&lt;s:set var="myVar" value="%{#parameters.myVar}"/&gt;,因为参数中可能有多个myVar,它将返回一个字符串数组,所以如果你只想要一个参数,请将表达式更改为#parameters.myVar[0],然后@987654328 @ 会起作用。

<s:set var="myVar" value="%{#parameters.myVar[0]}"/>
<s:property value="#myVar.toUpperCase()" />

<s:set var="myVars" value="%{#parameters.myVar}"/>
<s:property value="#myVars[0].toUpperCase()" />

【讨论】:

  • 我已经尝试过您的代码,它会打印以下内容:[LJAVA.LANG.STRING;@11ADBF9D 这个#myVar 来自#parameters 上下文范围,我将它作为隐藏参数从另一个 JSP 传递,我可以确认它是一个字符串(myVar 里面有一个用户名)
  • @Jorge33212:试试&lt;s:property value="#myVar" /&gt;&lt;s:property value="#myVar.getClass()" /&gt; 并发布它打印的内容。
  • @Jorge33212 你正在尝试大写列表... :|
  • @AndreaLigios:实际上是数组。
  • &lt;s:property value="#myVar" /&gt; prints "Roberto Alvarez" &lt;s:property value="#myVar.getClass()"prints "class [Ljava.lang.String;"似乎我正在尝试在您指出时将数组大写.. D:.也许是因为当我传递隐藏参数时,我是这样传递的:
猜你喜欢
  • 1970-01-01
  • 2013-09-29
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 2021-11-16
  • 2014-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多