没有天理,这段简单的jsp代码怎么会有误?

superzrb 2002-06-23 11:45:15
代码如下:
<html>
<head>
<title>
Color demo I
</title>
</head>
<body>

<!-- This page generates a series of rainbow colored letters -->
<!-- It uses the JSP property set and get tags -->

<%@ page language="java" %>

<%! char c = 0; %>

<jsp:useBean id="letterColor" scope="application"
class="com.wrox.jspexamples.AlphabetCode" />

<%
for(int i = 0; i < 26; i++)
{
for(int j = 0; j < 26; j++)
{
c = (char)(0x41 + (26 - i + j)%26);
Character thisChar = new Character(c);
%>

<jsp:setProperty name="letterColor" property="Character"
value="<%= thisChar.toString() %>" />

<font color=<jsp:getProperty name="letterColor" property="Color" /> >
<jsp:getProperty name="letterColor" property="Character" />
</font>

<%
}
%>

<BR>

<%
}
%>

</body>
</html>
另一段javabean代码:

package com.wrox.jspexamples;

import java.awt.Color;
import java.util.*;

public class AlphabetCode
{
HashMap map;
char c = 0;
Integer colorNumber;
static int FIRST_LETTER = 0x41;
static int ALPHABET_LENGTH = 26;
float s = 0.9f;
float b = 0.9f;

public AlphabetCode()
{
this.map = new HashMap(ALPHABET_LENGTH);

for(int i = 0; i < ALPHABET_LENGTH; i++)
{
this.c = (char)(FIRST_LETTER + i);
float h = (float)i/ALPHABET_LENGTH;
this.map.put(new Character(c), Color.getHSBColor(h, s, b));
}
}

public void setCharacter(String nextChar)
{
this.c = nextChar.charAt(0);
}

public String getCharacter()
{
return (new Character(this.c).toString());
}

public String getColor()
{
Color rgb = (Color)map.get(new Character(this.c));
StringBuffer htmlColor = new StringBuffer(
colorNumber.toHexString(rgb.getRGB()
& 0x00ffffff));
// toHexString() won't preserve leading zeros, so need to add them back in
// if they've gone missing...
if (htmlColor.length() != 6) {
htmlColor.insert(0, "\"#00");
} else
htmlColor.insert(0, "\"#");

htmlColor.append("\"");

return htmlColor.toString();
}
}

错误提示:
org.apache.jasper.JasperException: Cannot find any information on property 'Color' in a bean of type 'com.wrox.jspexamples.AlphabetCode'
at org.apache.jasper.runtime.JspRuntimeLibrary.getReadMethod(JspRuntimeLibrary.java:701)
at org.apache.jasper.compiler.GetPropertyGenerator.generate(GetPropertyGenerator.java:104)
at org.apache.jasper.compiler.JspParseEventListener$GeneratorWrapper.generate(JspParseEventListener.java:831)
at org.apache.jasper.compiler.JspParseEventListener.generateAll(JspParseEventListener.java:241)
at org.apache.jasper.compiler.JspParseEventListener.endPageProcessing(JspParseEventListener.java:197)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:215)
at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:546)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:177)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:189)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1011)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106)
at java.lang.Thread.run(Thread.java:536)



--------------------------------------------------------------------------------


...全文
74 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
superzrb 2002-06-26
  • 打赏
  • 举报
回复
给分了,补充一下,属性名开头必须小写,中间部分可能要大写,取决于你的属性命名方式。
li_haizhou 2002-06-26
  • 打赏
  • 举报
回复
按照JavaBeans规范,属性名是必须小写的。

(同样的,类名必须大写)
bhr 2002-06-26
  • 打赏
  • 举报
回复
我的分怎么没得到呀^_*
superzrb 2002-06-25
  • 打赏
  • 举报
回复
属性是不是都要小写呢?
我调试去了,谢谢。
yakuu 2002-06-25
  • 打赏
  • 举报
回复
property="color"
property="character"

注意,要小写。^_^
bhr 2002-06-25
  • 打赏
  • 举报
回复
你把<font color=<jsp:getProperty name="letterColor" property="Color" /> 中的property="Color"改为property="color"试试(就是首字母变成小写的。
superzrb 2002-06-25
  • 打赏
  • 举报
回复
怎么没人回答,需要加分吗?
superzrb 2002-06-24
  • 打赏
  • 举报
回复
请大家简单的调试一下,
如果把
<font color=<jsp:getProperty name="letterColor" property="Color" /> >去掉了之后,就是别的语句
<jsp:setProperty name="letterColor" property="Character"
value="<%= thisChar.toString() %>" />
同样的出错。
我的javabean没有放错位置,这样的错误我是不会犯的。
yakuu 2002-06-24
  • 打赏
  • 举报
回复
定义一个
public void setColor()
属性。
dd777 2002-06-24
  • 打赏
  • 举报
回复
javabean 的存放位置不对,
或者bean中没有你需要调用的Color属性。
aistill 2002-06-24
  • 打赏
  • 举报
回复
你的jsp中有如下代码:
<font color=<jsp:getProperty name="letterColor" property="Color" /> >
错误提示类letterColor中没有属性Color,你尝试在bean中添加一个setColor()方法试试,如果不行,就需要在bean中添加一个Color变量
pentax 2002-06-24
  • 打赏
  • 举报
回复
可能是你的bean没放对地方或者没有配置对,bean放在com\wrox\jspexamples\目录下,jsp文件和com要在同一目录下。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧