繁体   English   中英

从JSP脚本集设置JSTL条件,然后传递给Java脚本

[英]Set JSTL condition from a JSP scriptlet, then pass to java script

好。 我不确定这是否真的是我的问题的目标,但是我确实在试图了解如何解决我的问题。 我一直遇到障碍。 我试图将布尔变量从scriplet传递给JSTL,然后调用js函数以读取其真假。 这是我到目前为止的内容:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!--Take out after testing --> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head></head>
<body>
<form name="myForm" action="test.html">
----
<% if (myJavaFunction.FormIsChanged() && myJavaFunction.ErrorCount()>0) {%>
<br />
<%@include file="/countallerrors.jsp"%>
<br />
<% } %>
<c:set var="ErrorPresent" value="false"/>
</form> 
</body>
</html>

基本上,我的问题是如何将我的“ ErrorPresent”变量设置为等于(myJavaFunction.FormIsChanged() && myJavaFunction.ErrorCount()>0)

我是JSTL的新手,今天经过一番研究,我发现使用scriptlet并不是一种好的做法,因此我想尝试一下是否可以使用JSTL做到这一点。 一旦我使JSTL布尔变量起作用,我想传递给Java脚本函数,该函数将在提交表单之前确定表单是否有错误。 任何方向将不胜感激。

谢谢,娜娜

您是正确的,使用scriptlet通常不是一个好习惯-最好编写特定的标签来封装业务逻辑。 这有助于将演示文稿与控制代码分开。

但是要完成您想要的操作,请尝试以下操作:

<% boolean errorPresent = myJavaFunction.formIsChanged() && myJavaFunction.errorCount()>0; %>

变量errorPresent现在可用于页面范围,并且可以使用普通的JSTL插值进行引用,例如<p>errorPresent: ${errorPresent}</p>

在另一文体注:Java的风格是将变量和方法camelCased首字母小写。 类名称应为带有大写字母的MixedCase 我上面的示例纠正了这一点。 (常量应为ALL_CAPS_WITH_UNDERSCORES

我认为您正在寻找的答案是:

<c:set var="ErrorPresent" value="${(myJavaFunction.FormIsChanged() && myJavaFunction.ErrorCount()>0)}"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM