这只是一个奇怪发生问题的原因.
我犯了一个错误,应该使用"cssClass",但输入"class".但是"class"没有被定义为textarea标签的属性,所以我期望行为与cssClass值相同(非定义属性应该按原样呈现,并且它确实呈现属性但具有奇怪的值,该值似乎不可更改.我提供给它的任何值都被忽略,默认为支持标记的类.
例如,如果我定义一个"火鸡"值,我希望在html中呈现一个火鸡值,它就像我们在下面的例子中看到的那样.
这是我在JSP上使用的内容:
<s:textarea turkey="" class="" name="qualLine.description" value="%{description}"/>
Run Code Online (Sandbox Code Playgroud)
这是呈现的内容:
<textarea name="qualLine.description" cols="" rows="" id="cows" class="class java.util.HashMap" turkey="">test</textarea>
Run Code Online (Sandbox Code Playgroud)
我的问题不是我应该怎么做,因为我应该使用cssClass而不是类,我的问题是:这是预期的,为什么?
也许与使用的 Freemarker TemplateModel 有关?
在 中dynamic-attributes.ftl
(包含在 中以textarea.ftl
解析动态属性),首先使用实例根据 ValueStack 评估属性值StrutsUtil.translateVariables
,该实例仅使用对 的静态调用TestParseUtil.translateVariables
。但是,当它不计算任何内容(null 或 void)时,它就会恢复为属性名称 - 类。
${class}
然后,该值“class”将在dynamic-attributes.ftl 中作为Freemarker 表达式进行计算。
StrutsUtil 被放置在 Freemarker 模板模型中,FreemarkerManager
它调用ContextUtil
来检索 Struts2 对象的映射以放置到模板模型中。放置在 TemplateModel 中的这个映射是一个 HashMap(也许是罪魁祸首映射?)。
所以,这显然不是一个完整的答案,所以我不希望“答案”被接受,但它太多了,无法放在评论中,它可能有助于阐明一些情况。如果本周晚些时候我有时间,我可能会下载 Struts2 源代码并使用它来找到真正的答案。但更有可能的是,我不会花时间!
不过,这确实是一个有趣的问题。
归档时间: |
|
查看次数: |
2670 次 |
最近记录: |