2012-08-09 60 views
0

我是JSP的初学者,需要一些帮助。我从我的第一个JSP页面中的这一段代码开始了将JSP转换为JSTL

<% 
    LoginService user = new LoginService(); 
%> 

Hello <%=user.getUserID() %>! 

工作得很好。我正确地导入了LoginService类,这段代码起作用了!但现在我正在学习JSTL并试图将上述内容转换为JSTL标签。所以我右脚下车,但需要一些帮助完成。到目前为止,我有

<jsp:useBean id="user" class="org.test.LoginService"></jsp:useBean> 

但我在转换最后一个Hello行到JSTL标记时遇到麻烦!我无法弄清楚如何在JSP标记中引用方法getUserID()。我自己走了这么远,但需要一些帮助完成!任何回应将不胜感激!

+1

这种方法现在已经过时了。使用任何'jsp'标签都没有地方。在你的情况下,使用'jsp:useBean'标签创建另一个类LoginService实例。使用更灵活和功能性标签'c:set'和'c:out'。他们沿着[EL](http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPIntro7.html)可以完全替代使用scriptlet和'jsp'标记库。 – kapand 2012-08-10 00:23:16

+0

你可以阅读为什么这样的方法是最好的[这里](http://stackoverflow.com/questions/9680248/getting-a-null-value-for-where-i-expect-a-string-set-by -the-mutator/9680335#9680335)和[here](http://stackoverflow.com/questions/5088625/how-to-get-an-object-of-java-class-from-jsp/5088714#5088714) 。顺便说一句,使用'c:out'标签是有道理的。 [Here](http://stackoverflow.com/questions/291031/jsp-cout-tag)的详细解释。 – kapand 2012-08-10 00:29:26

回答

2

您可以使用:

<jsp:getProperty name="user" property="userID" /> 

,但最好使用:

${user.userID} 
+0

谢谢你的帮助! – gmustudent 2012-08-09 21:54:01

1

这将是:

Hello ${user.userID}! 
3

您可以使用表达式语言:

<c:out value="Hello ${user.userId}!" /> 
+0

我对此非常陌生(今天学习jsp),并且正在努力掌握所有向我投掷的东西。你能帮我理解我将如何以正确的方式创建用户对象?那是通过使用c:set?谢谢 – gmustudent 2012-08-10 00:56:42

+0

当我试图输入你的代码时,它不适合我。它有一个警告说未知标签(c:out)。当我试图用警告运行它时,我引发了一个404代码,并在该代码行中抛出了Exception。 – gmustudent 2012-08-10 01:02:22

+0

在您的servlet中创建一个用户对象,并将其设置为一个http请求,属性为request.setAttribute(“user”,user);'。你也可以使用会话范围。这取决于问题和目标的背景。你需要正确包含'jstl'库。你可以阅读[这里](http://stackoverflow.com/questions/8400301/cout-unknown-tag/8400733#8400733)关于解决这个问题。 – kapand 2012-08-10 01:34:24