0

我的 CQ5 页面的 JSP 中有这段简单的代码,但我无法让它正常工作。我想检查其中一个输入字段是否发送为空,但它始终输出“非空”:

<%
if(slingRequest.getParameter("authorMail") == null) {
    %>empty<%
} else {
    %>not empty<%
}
%>

我试过验证反对"null"""" "这些都不会让我的条件输出“空”。仅当我从表单中完全删除输入字段时才有效。

我可以使用 jQuery 在前端解决一些问题,但我认为对于像这样简单的事情来说这有点愚蠢。有谁知道如何检查 GET 参数实际上是空的吗?

这是整个 JSP:

<%@include file="/libs/foundation/global.jsp"%>
<html>
<head>
    <title>Test</title>
</head>

<body>
    <form method="get" action="<%= currentPage.getPath() %>.html">
        <input type="text" name="authorMail" id="authorMail" />
        <input type="submit" />
    </form>

    <%
    if(slingRequest.getParameter("authorMail") == "") {
        %>empty<%
    } else {
        %>not empty<%
    }
%>

___
"<%=slingRequest.getParameter("authorMail")%>"
___
</body>
</html>
4

2 回答 2

1

您不能使用 比较两个字符串==,因为此运算符比较对象引用而不是对象内容。使用equals()方法来比较字符串。

这就是为什么您需要首先authorEmail != null检查参数是否存在(它将在提交表单之后),然后!authorEmail.isEmpty()检查字符串是否不为空。第二种方法同上!authorEmail.equals("")

您也可以使用方便StringUtils.isNotEmpty()的方法。

于 2013-09-25T20:14:30.813 回答
0

出于某种原因,使用以下条件可以正常工作:

if(authorMail != null && !authorMail.isEmpty()) {
    stmt += "AND s.[cq:lastModifiedBy] = '" + authorMail + "'";
}
于 2013-09-25T18:52:28.227 回答