Struts逻辑的name属性中是否允许使用空格:equal标签?

时间:2008-11-25 22:57:10

标签: jsp struts

我在我维护的旧版应用程序的JSP文件中遇到了以下标记:

<logic:equal name="welcome memberInfoView" property="hasFoo" value="false">

该名称属性对我来说非常错误。根据我在Struts文档中读到的内容,不允许使用该空格。

这合法吗?如果是这样,它会做什么?如果没有,意图可能是什么?

编辑:经过一番搜索后,我发现“welcome memberInfoView”确实被故意用作属性名称(带空格)。

1 个答案:

答案 0 :(得分:2)

实际上,这个名称是合法的,但非常规。虽然在法律上是合法的,但它确实可能是一个错误。

“name”指定某个范围内的属性名称(由可选的“scope”属性确定,默认为“any”),而不是脚本变量名称。由于它实际上是地图的关键,因此它可以是任何字符串。

此标记将从页面上下文开始,并查找名为“welcome memberInfoView”的属性。它将继续封闭范围,直到找到命名对象。然后它将查看该对象的“hasFoo”属性。如果它是“false”,则将调用封闭的片段。

另一件看起来不对的是属性“hasFoo”。通常,属性只是“foo”,对象应该有一个名为isFoo()getFoo()的访问者。也许逻辑标记在这方面是宽松的,并且将成功调用hasFoo()方法。

您可以为此用法创建一个简单的测试,并确保它按预期工作。