我有一个jsf,xhtml的web项目..当我登录时,我发送用户名和密码到Prijava.java。
提交按钮<h:commandButton value="Potrdi" action="#{Prijava.prijava}" />
Prijava方法:
public String prijava() throws SQLException{
Baza baza = new Baza();
//Gets connection with database
Connection conn = baza.povezi();
java.sql.Statement stmt = conn.createStatement();
ResultSet set = stmt.executeQuery("SELECT up_ime, geslo FROM uporabnik WHERE up_ime ='" +upIme +"'");
while(set.next()){
//String baza_up_ime = set.getString("up_ime");
//String geslo = set.getString("geslo");
//String uspesno = "";
}
return "Profil";
}
该方法返回字符串“Profil”,因此页面应重定向到Profil.xhtml,我想重定向用户。 当我点击提交按钮时出现此错误:
org.apache.el.parser.ParseException: Encountered " "}" "} "" at line 1, column 3.
Was expecting one of:
<INTEGER_LITERAL> ...
<FLOATING_POINT_LITERAL> ...
<STRING_LITERAL> ...
"true" ...
"false" ...
"null" ...
"(" ...
"!" ...
"not" ...
"empty" ...
"-" ...
<IDENTIFIER> ...
我不知道那是什么以及如何解决它...之前,它有效:/
编辑:
Profil.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:x_rt="http://java.sun.com/jstl/xml_rt"
xmlns:scriptfree="http://jakarta.apache.org/taglibs/standard/scriptfree"
xmlns:permittedTaglibs="http://jakarta.apache.org/taglibs/standard/permittedTaglibs"
xmlns:sql="http://java.sun.com/jsp/jstl/sql"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
xmlns:x="http://java.sun.com/jsp/jstl/xml"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:fmt_rt="http://java.sun.com/jstl/fmt_rt"
xmlns:c_rt="http://java.sun.com/jstl/core_rt">
<h:head></h:head>
<head>
<title>: : Environmental Brand : :</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="dvmaincontainer">
<!--main div container starts here-->
<div id="dvtopcontainer">
<!-- top container starts here-->
<div id="dvlogocontainer">
<!-- logo container starts here-->
<h1>Najdi obrtnika</h1>
<h4>Kjer koli in kadarkoli</h4>
<!-- logo container ends here-->
</div>
<div id="dvnavicontainer">
<!-- navogation div starts here-->
<img src="images/navi_left.jpg" alt="" />
<div id="tabs1" >
<ul>
<!-- CSS Tabs -->
<li ><a href="Index.xhtml"><span>Domača stran</span></a></li>
<li id="current"><a href="Profil.xhtml"><span>Profil</span></a></li>
<li><a href="Zahtevki.xhtml"><span>Zahtevki</span></a></li>
<li><a href="Iskanje.xhtml"><span>Iskanje</span></a></li>
</ul>
</div>
<img src="images/navi_right.jpg" alt="" />
<!-- navogation div ends here-->
</div>
<!-- top container ends here-->
</div>
<div id="dvbodycontainer">
<!-- body DIV1 starts here-->
<div id="dvbannerbgcontainer">
<!-- banner bg div starts here-->
<p>Profil:</p>
<f:view>
Hello <h:outputText value="#{Prijava.upIme}"/>!
</f:view>
<table border="1px">
<tr>
<td>Ime:
</td>
<td>
<h:inputText value="#{Uporabnik.ime}" />
<!-- Za change text -->
<!-- <h:commandButton value="Change text" actionListener="#{}" /> -->
</td>
</tr>
<tr>
<td>Priimek
</td>
<td>
<h:inputText value="" />
</td>
</tr>
</table>
<!-- banner bg div ends here-->
</div>
<!-- body DIV2 starts here-->
<div id="dvbannerbgcontainer">
<!-- banner bg div starts here-->
<!-- banner bg div ends here-->
</div>
<!-- body div ends here-->
</div>
<div id="dvfootercontainer">
<!-- footer div starts here-->
<div id="foottop">
<p><span>Copyright 2013 Žiga Sternad, Gašper Sevčnikar, Jurij Valent, Primož Pavlin</span> </p>
<div class="design"> <a href="#"><img src="images/studio.jpg" alt="Studio7designs" border="0" title="Studio7designs" /></a> </div>
</div>
<!-- footer div ends here-->
</div>
<!--main div container ends here-->
</div>
</body>
</html>
enter code here
答案 0 :(得分:6)
这是EL语法错误。它表示在遇到列出的标识符或关键字之一时遇到了}
。
这很可能是由以下行引起的:
<!-- <h:commandButton value="Change text" actionListener="#{}" /> -->
#{}
确实是一个无效的EL表达式。
请注意,JSF / EL在Web服务器上运行并生成HTML代码,并且它们对HTML注释不敏感(它们是生成的HTML的一部分,而不是JSF / EL代码的一部分)。作为HTML代码解释器的webbrowser是唯一对HTML注释敏感的人。换句话说,HTML注释不会阻止执行封装的JSF标记和EL表达式,与您期望的相反。
无关,您的JSTL设置完全混乱。我正在看到古代1.0版本和原型的XML名称空间声明。我强烈建议您在不小心尝试安装JSTL时清理您所做的一切,并在仔细阅读our JSTL wiki page后重新执行此操作。您最终只能在/WEB-INF/lib
中拥有一个JSTL 1.2 JAR文件,并且在web.xml
中绝对没有松散的TLD文件或其他声明。
答案 1 :(得分:5)
添加this:
<context-param>
<param-name>facelets.SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
到你的web.xml
使用JSF 2中的评论。