首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OGNL加法/类型强制

OGNL加法/类型强制
EN

Stack Overflow用户
提问于 2011-06-15 23:59:23
回答 1查看 4.7K关注 0票数 3
代码语言:javascript
复制
%{control.current + #displayRows}

是我最终需要执行的语句。我将它放在s:if标记中,并使用test来查看此值是否在某个范围内。

最终,我得到的是字符串连接而不是加法,因为加法的两端都不被OGNL视为数值类型。做了一些小修修补补,我看到了

代码语言:javascript
复制
%{control.current + control.current}

确实会导致数字相加,因此之前在s: displayRows标记中设置的set值确实被视为非数字值。下面是我的s:set标签:

代码语言:javascript
复制
<s:set name="displayRows" value="%{#application['app_settings'].settings['MAX ACCESS FIELD TITLES ROWS']}" />

这些设置表示Java中的Map。而键始终是一个字符串...好吧..。该值并不总是整数,因为存储了分类的应用程序设置。所以我们能做的最好的值类型就是Object。我相信这就是问题所在。OGNL不认为这是可以自动转换为数字类型的东西。

我已经阅读了http://incubator.apache.org/ognl/language-guide.html的语言指南,它解释了其中的一些概念,但我没有看到一种方法来告诉OGNL“是的,这个包含值为15的displayRows确实是一个整数”。有没有办法做到这一点。我需要能够在飞行中做加法,所以我不能在Javaland中创建额外的属性来帮助我。我已经研究了OGNL、s:set标记和Java级别,但我找不到合适的地方来实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-16 01:35:41

Struts认为#displayRows是一个字符串,而我们需要它作为一个Integer (我假设是integer,您可以将以下内容应用于任何内置类型)。

首先在struts.xml中启用静态方法访问。

这里引用的是我的struts.xml,最后一个常量标记是您需要添加到您的标记中的:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.devMode" value="true" />
    <constant name="struts.ui.theme" value="simple" />
    <constant name="struts.date.format" value="0,date,dd.MM.yyyy"/>
    <constant name="format.date" value="{0,date,dd.MM.yyyy}"/>
    <constant name="struts.ognl.allowStaticMethodAccess" value="true"/> 
</struts>

然后,在您的jsp中,您将执行如下操作:

代码语言:javascript
复制
<s:property value='@java.lang.Integer@valueOf("123") + @java.lang.Integer@valueOf("123")' />

显示: 246

在set标记中进行转换可能会更好:

代码语言:javascript
复制
<s:set name="displayRows" value="@java.lang.Integer@valueOf(#application['app_settings'].settings['MAX ACCESS FIELD TITLES ROWS'])" />

然后,

代码语言:javascript
复制
<s:property value="control.current + #displayRows"/>

将会按照预期运行。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6360713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档