0
我拉着我的頭髮試圖獲得在JSP中工作的自定義函數。我已經閱讀了關於該主題的其他問題,但是我沒有犯這些錯誤,並且正在遵循一本JSP書籍(首先是Servlets & JSP)來創建我的標記。自定義函數從.tld文件不能正常工作
這裏是位於/ 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永遠不會被打印。它只是跳過測試。
無法在調試模式下找出問題。我假設表達式僅僅因爲某種原因沒有被評估,並且什麼也沒有返回。