我是Java EE的新手,我知道类似以下三行
<%= x+1 %>
<%= request.getParameter("name") %>
<%! counter++; %>
Run Code Online (Sandbox Code Playgroud)
是一种旧式的编码方式,在JSP版本2中,存在一种避免JSP文件中的Java代码的方法.有人可以告诉我替代的JSP 2行,以及这种技术的名称是什么?
以下代码导致错误:
<c:set var="test" value="test1"/>
<%
String resp = "abc";
resp = resp + test;
pageContext.setAttribute("resp", resp);
%>
<c:out value="${resp}"/>
Run Code Online (Sandbox Code Playgroud)
错误说
"error a line 4: unknown symbol 'test'".
Run Code Online (Sandbox Code Playgroud)
如何test从JSTL代码传递到JSP scriptlet?
我被告知在我的JSP页面中使用scriptlet(<%= ...%>)并不是一个好主意.
有没有更多java/jsp经验的人可以给我一些关于如何更改此代码的指示,以便更多"最佳实践",无论可能是什么?
这个JSP实际上是我的sitemesh主装饰页面.基本上我的网页设计有一个标签条和一个子菜单,我希望以某种方式突出显示当前标签,并通过查看当前请求URI显示正确的子菜单.
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
<html>
<head>
<title>My Events - <decorator:title /></title>
<link href="<%= request.getContextPath() %>/assets/styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="tabs">
<a
<%= request.getRequestURI().contains("/events/") ? "class='selected'" : "" %>
href='<%= request.getContextPath() %>/events/Listing.action'>Events</a>
<a
<%= request.getRequestURI().contains("/people/") ? "class='selected'" : "" %>
href='<%= request.getContextPath() %>/people/Listing.action'>People</a>
</div>
<div class="submenu">
<% if(request.getRequestURI().contains("/events/")) { %>
<a href="Listing.action">List of Events</a>
|<a href="New.action">New Event</a>
<% } %>
<% if(request.getRequestURI().contains("/people/")) { %>
<a href="Listing.action">List of People</a>
|<a href="New.action">New Person</a>
<% } %> …Run Code Online (Sandbox Code Playgroud) 以下代码导致错误:
<c:set var="test" value="test1"/>
<%
String resp = "abc";
resp = resp + ${test}; //in this line I got an Exception.
out.println(resp);
%>
Run Code Online (Sandbox Code Playgroud)
我不是在scriptlet.why中使用表达式语言"$ {test}"吗?
我知道它不推荐,我应该使用标签库等.
但是我仍然想知道在JSP scriplet中声明方法是否合法:
<%
public String doSomething(String param) {
//
}
String test = doSomething("test");
%>
Run Code Online (Sandbox Code Playgroud)
这合法吗?我得到一些a ; is expected似乎不合适的奇怪的编译错误(如).谢谢.
我必须访问在迭代器中计算的JSTL变量.
代码摘录:
<c:forEach var="resultBean" items="${resultList}" varStatus="status">
card: ${resultBean.cardNum}
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
我想访问${resultBean.cardNum}scriptlet代码.我现在正在做的是:
<c:forEach var="resultBean" items="${resultList}" varStatus="status">
card: ${resultBean.cardNum}
<c:set var="currentCardNum">${resultBean.cardNum}</c:set>
<%out.write( StringUtils.mask( (String)pageContext.getAttribute("currentCardNum") ) );%>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
我想跳过第3行,我在pageContext中设置变量.没有设置它可以实现相同的结果吗?或者我可以使用其他方式吗?
我正在使用Java及其框架(Spring 3.1.1)开发Web应用程序.我试图避免尽可能多地使用scriptlet,但是我找不到除此之外的方法来定义数组:
<%
String[] alphabet = {"A", "B", "C", ... , "Z"};
pageContext.setAttribute("alphabet", alphabet);
%>
Run Code Online (Sandbox Code Playgroud)
设置pageContext属性后,我可以使用它${alphabet}.但我想知道,是否可以使用普通的JSTL/EL来创建数组?
更新:我正在使用此数组来创建链接.例如,如果用户单击"S",则会出现名字以"S"开头的员工列表.因此,我不是逐个创建链接而是迭代${alphabet}.
谁能告诉我如何在JSP中将JavaScript值传递给Scriptlet?
我正在使用Spring MVC,在我的Controller中,我使用以下方法设置标准模型属性:
...
model.addAttribute("param", value);
...
Run Code Online (Sandbox Code Playgroud)
现在,我希望在一个scriptlet中(在JSP中)访问它.例如:
<%
Object value = ***.get***("param");
... more java code...
%>
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
注意:我理解使用scriptlet是一个不好的想法,但请暂时忍受它.