我正在使用Java 7,Eclipse Luna和WildFly 8.2.1。
在Eclipse中,我有一个带有Dynamic Web Module 2.5和Java 1.7的动态Web项目。
我有一个 PageStartTagSupport 类,它扩展了TagSupport
。在那里,我创建了一个Map<String, Object>
并将其设置为PageContext
的属性:
package com.srh.tag;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class PageStartTagSupport extends TagSupport {
@Override
public int doStartTag() throws JspException {
Map<String, Object> map = new HashMap<String, Object>();
map.put("NAME", "SRH");
pageContext.setAttribute("sessionsMap", map);
return EVAL_BODY_INCLUDE;
}
@Override
public int doEndTag() throws JspException {
return EVAL_PAGE;
}
}
我还有 PageStartTagExtraInfo 类,它扩展了TagExtraInfo
:
package com.srh.tag;
import javax.servlet.jsp.tagext.TagData;
import javax.servlet.jsp.tagext.TagExtraInfo;
import javax.servlet.jsp.tagext.VariableInfo;
public class PageStartTagExtraInfo extends TagExtraInfo {
@Override
public VariableInfo[] getVariableInfo(TagData data) {
return new VariableInfo[] {
new VariableInfo("sessionsMap", "java.util.Map", true, VariableInfo.AT_BEGIN)
};
}
}
在WEB-INF中我有一个 srhtags.tld 文件:
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd ">
<tlib-version>0.0</tlib-version>
<short-name>NMTOKEN</short-name>
<tag>
<description>Session Tag</description>
<name>pagestart</name>
<tag-class>com.srh.tag.PageStartTagSupport</tag-class>
<tei-class>com.srh.tag.PageStartTagExtraInfo</tei-class>
<body-content>empty</body-content>
</tag>
</taglib>
现在我创建一个login.jsp,在那里我访问该地图并尝试为其添加一个键和值。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ taglib uri="/WEB-INF/srhtags.tld" prefix="srh"%>
<srh:pagestart/>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
System.out.println("************* login.jsp: inside");
System.out.println("login.jsp: (original): sessionsMap=" + sessionsMap);
sessionsMap.put("NAME2", "SRH2");
System.out.println("login.jsp: (latest): sessionsMap=" + sessionsMap);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
但问题是Eclipse在这一行上给我错误信息:
sessionsMap.put("NAME2", "SRH2");
错误信息是:
该方法在类型中放置(捕获#5-of?,捕获#6-of?) 映射不适用于参数 (String,String)
为什么Eclipse会给我这个错误?
由于