Struts2 UI textarea标签添加 "class"属性用 "class java.util.HashMap"值填充它自己

标签 struts2

这只是一个为什么会发生奇怪的事情的问题。

我犯了一个错误,应该使用“cssClass”,但输入了“class”。但是,“class”并未定义为 textarea 标记的属性,因此我希望行为与 cssClass 值相同(未定义的属性应按原样呈现,它确实呈现该属性,但具有奇怪的值和该值似乎不可更改。我提供给它的任何值都将被忽略并默认为支持标签的类)。

例如,如果我定义了一个“turkey”值,我希望在 html 中呈现一个 turkey 值,正如我们在以下示例中看到的那样。

这是我在 JSP 上使用的:

<s:textarea turkey="" class="" name="qualLine.description" value="%{description}"/>

这是渲染的内容:
<textarea name="qualLine.description" cols="" rows="" id="cows" class="class java.util.HashMap" turkey="">test</textarea>

我的问题不是我应该做什么,因为我应该使用 cssClass 而不是 class,我的问题是:这是预期的,为什么?

最佳答案

也许它与正在使用的 Freemarker TemplateModel 有关?

dynamic-attributes.ftl ,它来自 textarea.ftl要解析动态属性,首先使用 StrutsUtil.translateVariables 对 ValueStack 评估属性值。实例,它只使用对 TestParseUtil.translateVariables 的静态调用.但是当它不计算任何东西(null 或 void)时,它就会恢复到属性名称 - 类。

这个值,“class”,然后被评估为一个 Freemarker 表达式 - ${class} - 在动态属性.ftl 中。

StrutsUtil 被放置在来自 FreemarkerManager 的 Freemarker 模板模型中。调用 ContextUtil检索 Struts2 对象的映射以放置到模板模型中。放置在 TemplateModel 中的这个映射是一个 HashMap(也许是罪魁祸首映射?)。

所以,这显然不是一个完整的答案,所以我不希望“答案”被接受,但在评论中放置太多了,它可能有助于阐明一些问题。如果我这周晚些时候有时间,我可能会拉下 Struts2 源并使用它来找到真正的答案。但更有可能的是,我不会花时间!

不过,这个问题肯定很有趣。

关于Struts2 UI textarea标签添加 "class"属性用 "class java.util.HashMap"值填充它自己,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12209111/

相关文章:

java - 如何使用java在struts treenode标签中显示动态字符串值

java - Struts 2 jQuery Datepicker 格式问题

java - 当我使用 <s :datetextfield/> tag in a jsp 时发生异常

java - 在 Struts2 迭代器中的某个点中断

java - 对静态变量的访问被阻止

java - i18n拦截器在Struts2中的使用

java - 如何在 Struts 2 optgroup 中显示 Map 值的元素(对象列表)?

java - 在struts 2中显示验证消息

web.xml 中的 Struts2 配置文件名

java - 为什么 ModelDriven 在 Struts 2 中停止工作