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

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

本文关键字:脚本 然后 java 条件 JSP 设置 JSTL      更新时间:2023-09-26

好的。我不确定这是否真的是我问题的目标,但我真的在努力了解如何解决我的问题。我不停地跑跨栏。我试图将一个布尔变量从一个scriplet传递给JSTL,然后调用一个js函数来读取它的true还是false。以下是我目前所拥有的:

<%@ 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脚本函数,这个函数将在提交表单之前确定表单是否有错误。任何指示都将不胜感激。

谢谢,Naina

您是正确的,使用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)}"/>
相关文章: