by agate - Published: 2008-04-03 [11:01 上午] - Category: 程序编码

原来还是自己的问题……首先自我检讨一下,常常总是自以为是用自己的思维方式想问题。呵呵,这个真的是打开眼界啊!原来 OGNL 这个玩意有如此大的魔力,难怪 Struts2 使用他哈!厉害……

说道上回写的那个中文问题,本来是以为是转换成什么 Unicode 编码方式了,其实不然,只不过 Struts2 的 OGNL 有点低智商,只认 '' 符号里的西欧字符为字符串,其他的字符出现就会抛个 FormatException 异常……比较罕见,但是这个也使我研究了一小下 OGNL 的“真才实学”。

发现 Struts2 中
<s:if test="#user.sex == 'male' "> ... </s:if>
是可以的

<s:if test="#user.sex == '男' "> ... </s:if>
是不行的,必须改成
<s:if test="#user.sex == '男'.toString() "> ... </s:if>

发现牛逼在何处了吧…… OGNL 竟然除了属性的调用,还可以调用方法。像上面这样使用的话,中文的 OGNL 比较就基本没有问题了。

by agate - Published: 2008-04-02 [9:48 下午] - Category: 历程, 程序编码

最近一直使用struts2进行项目开发,因为之前就是用的webwork进行学习的,可是一直没有使用到页面逻辑的 if 标签。谁知今天用来比较一个String是否等于一个String的时候出现了问题。

这里先对自己不扎实的OGNL知识表示惭愧,我现学现卖地使用了包括EL格式的${},以及参见的${}和#{}以及直接输入属性的方式都无法识别,可是在我使用输出型标签<s:property/>时竟是完好显示的……

百思不得其解。忽然想到Struts2的Ajax是使用Dojo的,这个框架对于除西欧字符以外的所有字符都是使用Unicode的方式进行编码的(所有的字符都要编程类似 'ऩ' 的格式)。莫非……我马上在action端把属性的值进行了url转换,并写了一个测试用的jsp模板页面,里头也对应的把对比的字符串使用url格式的字符串代替了,结果真的通过了……我的妈呀!不会这么弱吧,这个框架的标签功能岂能这样啊!

没法,只好正规点使用其他标签来替代这种页面标签逻辑的方法。打算努力学几天OGNL和“白痴”的Struts2的标签,知道了结果陆续文章跟进……

补充后续探讨:
《续:Struts2的OGNL的中文识别》

Tags: [ , , , , , ] - Comments: View Comments