使用 javascript 的 return 值作为 struts if 标签中的条件
Using javascript's return value as condition in a struts if tag
我正在使用 struts2 和 javascript 格式化 HTML,并将函数的 return 值传递给 <s:if>
标记。我希望它表现得像任何其他条件一样;但是,<s:if>
标签的行为始终如一地 returning false
。
page.jsp
<s:if test="%{myFunction()}">
<p>foo</p>
</s:if>
<s:else>
<p>bar</p>
</s:else>
page.js
function myFunction() {
if(some_condition) { return true; }
else { return false; }
}
bar
我已经独立测试了 javascript 函数,它按预期工作 - true
和 false
都根据条件进行了 returned。该函数已正确包含在 .jsp
代码中(它早先在 <script>
标记中定义)。
凭直觉,我相信我应该能够使用 return 值作为条件,但我开始相信我可能不正确。关于此行为的文档相当稀疏,official struts2 documentation 没有太多关于它是否可能的说法。
这是语法错误,还是我 运行 达到了 struts2 的限制?
它既不是 (1) 语法错误,也不是 (2) "limitation" of Struts 2.
- 如果是语法错误,您会得到...语法错误,要么在服务器端的日志中,要么在客户端的 JS 控制台中。
- S2 是一个标准的基于动作的 Java 网络框架;它对客户端的任何事情一无所知:服务器上发生的事情与客户端(例如浏览器)发生的事情之间没有(直接)互操作。
TL;DR: JSP 服务器上的页面 运行。 Java在客户端编写 运行 脚本。没有直接联系。
发送给客户端的页面在发送之前呈现,在之前Java脚本是运行等等。服务器端对您页面上的 JavaScript 一无所知。 (这就是为什么您可以将 S2 标记呈现到 JS 中,然后代码在客户端上使用它。)
如果您希望能够动态呈现 DOM 元素,那么一切都必须在 JS 端处理,尽管您的 JS 代码可以包含 S2 标签。
这是基本的 Java 网络应用内容:JSP 文件只是模板。它们在作为响应发送给客户端之前已完全呈现。
我正在使用 struts2 和 javascript 格式化 HTML,并将函数的 return 值传递给 <s:if>
标记。我希望它表现得像任何其他条件一样;但是,<s:if>
标签的行为始终如一地 returning false
。
page.jsp
<s:if test="%{myFunction()}">
<p>foo</p>
</s:if>
<s:else>
<p>bar</p>
</s:else>
page.js
function myFunction() {
if(some_condition) { return true; }
else { return false; }
}
bar
我已经独立测试了 javascript 函数,它按预期工作 - true
和 false
都根据条件进行了 returned。该函数已正确包含在 .jsp
代码中(它早先在 <script>
标记中定义)。
凭直觉,我相信我应该能够使用 return 值作为条件,但我开始相信我可能不正确。关于此行为的文档相当稀疏,official struts2 documentation 没有太多关于它是否可能的说法。
这是语法错误,还是我 运行 达到了 struts2 的限制?
它既不是 (1) 语法错误,也不是 (2) "limitation" of Struts 2.
- 如果是语法错误,您会得到...语法错误,要么在服务器端的日志中,要么在客户端的 JS 控制台中。
- S2 是一个标准的基于动作的 Java 网络框架;它对客户端的任何事情一无所知:服务器上发生的事情与客户端(例如浏览器)发生的事情之间没有(直接)互操作。
TL;DR: JSP 服务器上的页面 运行。 Java在客户端编写 运行 脚本。没有直接联系。
发送给客户端的页面在发送之前呈现,在之前Java脚本是运行等等。服务器端对您页面上的 JavaScript 一无所知。 (这就是为什么您可以将 S2 标记呈现到 JS 中,然后代码在客户端上使用它。)
如果您希望能够动态呈现 DOM 元素,那么一切都必须在 JS 端处理,尽管您的 JS 代码可以包含 S2 标签。
这是基本的 Java 网络应用内容:JSP 文件只是模板。它们在作为响应发送给客户端之前已完全呈现。