繁体   English   中英

.tld文件中的自定义功能不起作用

[英]Custom Function from .tld File not working

我正在努力尝试使自定义功能在JSP中工作。 我已经阅读了有关该主题的其他问题,但是我没有犯那些错误,并且在创建我的标记时遵循了一本JSP书(Head First Servlets和JSP)。

这是我在/ WEB-INF /中的login.tld文件:

<tlib-version>1.2</tlib-version>
<uri>/WEB-INF/login.tld</uri>
<function>
    <name>validate</name>
    <function-class>org.patrickslagle.model.LoginManager</function-class>
    <function-signature>
        boolean validate(String username, String password)
    </function-signature>
</function>

LoginManager类中的方法:

public static boolean validate(String username, String password) {
    System.out.println("Servlet");
    DatabaseManager dbm = new DatabaseManager();
    boolean valid = false;
    ResultSet rs = null;
    Statement stmt = null;
    dbm.setUrl("jdbc:mysql://localhost:3306/pattycakes");
    dbm.connect();
    try {
        stmt = dbm.getConn().createStatement();
        String sql = "SELECT * FROM users WHERE email = '" + username + "' AND password = '" + password + "'";
        rs = stmt.executeQuery(sql);
        if (rs.next()) {
            valid = true;
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        dbm.disconnect(stmt, dbm.getConn());
    }
    return valid;
}

}

以及index.jsp中的标签:

<%@ taglib prefix="lm" uri="/WEB-INF/login.tld"%>

它的名称如下:

<c:if test="${ lm.validate(username, password) }">

在页面上以表格的形式输入以下两个输入:

     <input type="text" name="username" id="user_login" class="input"
                placeholder="Email Address" value="" size="20" />

<input type="password" name="password" id="user_pass" class="input"
                    placeholder="Password" value="" size="20" />

如果我打印到控制台,则会发现测试中的所有内容均未打印,并且LoginManager中的System.out.println不会被打印。 它只是跳过测试。

在调试模式下也难以解决问题。 我假设该表达式由于某种原因而没有被评估并且什么也不返回。

在您的login.tld中,而不是使用

boolean validate(String username, String password)

尝试使用

boolean validate(java.lang.String username, java.lang.String password) 

也,而不是使用

<c:if test="${ lm.validate(username, password) }">

尝试使用

<c:if test="${lm:validate(username, password)}">

如果您从请求中获取数据,那么您可能需要

<c:if test="${lm:validate(param.username, param.password)}">

暂无
暂无

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

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