Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法参数和JSTL_Java_Jsp_Jstl - Fatal编程技术网

Java 方法参数和JSTL

Java 方法参数和JSTL,java,jsp,jstl,Java,Jsp,Jstl,对于带有使用JSTL返回列表的参数的方法,“items”属性语法是什么?例如,如果我有一个方法 List<String> fName = null; public List<String> FirstName(String firstName) { return firstName } List fName=null; 公共列表名(字符串名) { 返回名字 } 和一个JSP <c:foreach var="something" items="fname"

对于带有使用JSTL返回列表的参数的方法,“items”属性语法是什么?例如,如果我有一个方法

List<String> fName = null;
public List<String> FirstName(String firstName)
{
    return firstName
}
List fName=null;
公共列表名(字符串名)
{
返回名字
}
和一个JSP

<c:foreach var="something" items="fname">
    ${something}
</c:foreach>

${something}
如何为方法提供参数


谢谢。

如何将变量传递给jstl

如果您的流程是在单个页面中完成的。这是一个例子

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>
<%@ page isELIgnored="false" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List;" %>
<% 
    List<String> xList = new ArrayList<String>();

    xList.add("a");
    xList.add("b");
    xList.add("c");

    pageContext.setAttribute("sList", xList);
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <c:forEach var="lst" items="${sList}">
        <span>${lst}</span>
    </c:forEach>

</body>
</html>

这没有多大意义。流程中出现了一些错误。您应该在servlet中准确地准备JSP所需的列表

List<String> firstNames = something.list(firstName);
request.setAttribute("firstNames", firstNames);
request.getRequestDispatcher("result.jsp").forward(request, response);
List firstName=something.List(firstName);
request.setAttribute(“firstNames”,firstNames);
getRequestDispatcher(“result.jsp”).forward(请求、响应);
然后

<c:forEach items="${firstNames}" var="firstName">
    ${firstName}<br/>
</c:forEach>

${firstName}
列表当然可以是一个bean属性,但在这一点上,您只需要确保您想要显示的列表已经在servlet中准备好,以便JSP EL只需要将其作为bean属性来获取



与具体问题无关,在JSP/EL 2.2(以及Servlet 3.0)中,可以将参数传递给bean方法,但在您的特定情况下,这绝对不是正确的解决方案。

您不能在c:forEach标记中调用方法。它基本上用于对集合进行迭代。我认为JSTL不支持直接从JSP调用java方法。JSTL中没有这样的标记来执行此操作。如果您需要从JSP调用java方法,您应该研究Ajax或DWR。@Ashish谢谢。我已经通过代码片段进行了修改,使其更具可读性。我正在将该列表传递到c:foreach中,如果我不需要该方法上的参数,它就可以正常工作。如果这个方法有一个参数,您是否熟悉如何实现这个功能?我有编程的基本知识,这是servlet中的一个方法,我遇到了一个问题。该方法接受一个参数并返回一个列表,因此我不确定c:foreach中的语法是否与您在答案中键入的语法不同。谢谢。是的,也是这样。问题可能在于如何将变量值传递给jsp页面。见编辑后的文章。如果调用jsp页面的过程与我的示例不同,请告诉我。谢谢您的帮助。我需要在将servlet发送到JSP之前准备好它,然后才能使用request.set/getattribute。谢谢您的帮助。我的问题是,我试图在准备列表之前将其发送到JSP。那天晚些时候我才明白,但你的帖子帮助我意识到我“明白”的内容是正确的。谢谢
<c:forEach items="${firstNames}" var="firstName">
    ${firstName}<br/>
</c:forEach>