【问题标题】:SetProperty: Mandatory attribute property missingSetProperty:缺少必需的属性属性
【发布时间】:2011-06-22 17:32:14
【问题描述】:

好的,首先是一些代码。这是我的 displayCollection.tag 的内容:

<%@ tag body-content="scriptless" import="com.serco.inquire.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ attribute name="mgr" required="true" %>
<jsp:useBean id="irc" scope="session" class="com.serco.inquire.irCollection">
<jsp:setProperty name="mgrid" value="${mgr}" />
</jsp:useBean>
${irc.mgrid}

这是我从 (myq.jsp) 调用它的 JSP:

<%@page language="java" import="java.util.*,com.serco.inquire.*" %>
<%@ taglib prefix="inq" tagdir="/WEB-INF/tags" %>
<inq:displayCollection mgr="Chris Novish" />

这是 irCollection 的 java 类(用于标记文件):

package com.serco.inquire;
import java.sql.*;
import java.util.*;
public class irCollection {
public String mgrid;
public irCollection() {
super();
}
public void setMgrid(String datum) {
this.mgrid = datum;
}
public String getMgrid() {
return this.mgrid;
}
}

最后,这是我尝试运行 myq.jsp 时遇到的错误:

org.apache.jasper.JasperException: /WEB-INF/tags/displayCollection.tag(7,2) SetProperty:强制属性 财产丢失 org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:198) org.apache.jasper.compiler.JspUtil.checkAttributes(JspUtil.java:174) org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:595) org.apache.jasper.compiler.Node$SetProperty.accept(Node.java:1150) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428) org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:647) org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1182) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434) org.apache.jasper.compiler.Node$Root.accept(Node.java:475) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376) org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1789) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:216) org.apache.jasper.compiler.Compiler.compile(Compiler.java:372) org.apache.jasper.compiler.Compiler.compile(Compiler.java:352) org.apache.jasper.compiler.Compiler.compile(Compiler.java:339) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:594) org.apache.jasper.servlet.JspServletWrapper.loadTagFile(JspServletWrapper.java:231) org.apache.jasper.compiler.TagFileProcessor.loadTagFile(TagFileProcessor.java:577) org.apache.jasper.compiler.TagFileProcessor.access$000(TagFileProcessor.java:48) org.apache.jasper.compiler.TagFileProcessor$TagFileLoaderVisitor.visit(TagFileProcessor.java:642) org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1539) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434) org.apache.jasper.compiler.Node$Root.accept(Node.java:475) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376) org.apache.jasper.compiler.TagFileProcessor.loadTagFiles(TagFileProcessor.java:660) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:228) org.apache.jasper.compiler.Compiler.compile(Compiler.java:372) org.apache.jasper.compiler.Compiler.compile(Compiler.java:352) org.apache.jasper.compiler.Compiler.compile(Compiler.java:339) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:594) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

据我所知,属性mgr 在调用displayCollection.tag 时在myq.jsp 中设置,而displayCOllection.tag 的唯一属性(必需)是mgr。所以呃……我误会了什么?

【问题讨论】:

    标签: java jsp jstl javabeans


    【解决方案1】:

    仔细查看 jsp:setProperty 标签上的 Sun 的 documentationname 属性实际上是 jsp:useBean 中声明的 bean 的 id 属性 - 所以它应该是“irc”。 property 属性在 setProperty 上是必需的,并且是您尝试设置的实际属性。

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多