能用setProperty传递一个对象给bean吗?

smallstrong 2003-12-08 02:34:16
能用setProperty传递一个对象给bean吗?
...全文
36 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
junyi2003 2003-12-09
  • 打赏
  • 举报
回复
结构和美观是随后追求的东西
junyi2003 2003-12-09
  • 打赏
  • 举报
回复
在JSP中用set/getProperty来传个值而已,一些复杂的处理要么放在Bean中或者JSP中<%/*JAVA*/%>
有时候不要为了结构而结构,也不要为了美观而美观,实用能用好用是第一。
qukmei 2003-12-09
  • 打赏
  • 举报
回复
laipu(寻梦天涯):好像可以啊,不过在bean中执行response.setContentType("text/html")时有个
java.lang.NullPointerException被抛出,我再找找原因看

这是你在传递变量时有空值 ,你可以先检测 一下,再传递
qukmei 2003-12-09
  • 打赏
  • 举报
回复
请问一下,你这个对象是什么?你能讲出来吗?
hanty 2003-12-09
  • 打赏
  • 举报
回复
木头象说法是对的
不过STRUTS技术则可以实现一部分
gujianxin 2003-12-09
  • 打赏
  • 举报
回复
setProperty 本身只支持String,

但你可以通过序列化或者类似的方法来用String做对象的中间状态,来实现传对象.
smallstrong 2003-12-09
  • 打赏
  • 举报
回复
laipu(寻梦天涯):好像可以啊,不过在bean中执行response.setContentType("text/html")时有个
java.lang.NullPointerException被抛出,我再找找原因看

nql10(林):巧妙!但我要的时对象,不是对象中的值

smallstrong 2003-12-09
  • 打赏
  • 举报
回复
qukmei(鬼才):

你好,传递的是request
smallstrong 2003-12-09
  • 打赏
  • 举报
回复
laipu(寻梦天涯):不行,能编译通过,但调用bean时出现request为空的异常
nql10 2003-12-08
  • 打赏
  • 举报
回复
要用的时候再Split开:

<%
String str = jsp2BeanId.getSample();
String[] str1 = str.split(",");
for(int i=0;i<str1.length;i++)
{
out.println(str1[i]+"<br>");
}
%>
nql10 2003-12-08
  • 打赏
  • 举报
回复
jsp2文件:

<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.Enumeration"%>
<html>
<head>
<title>
jsp2
</title>
</head>
<%!
private String makeTable(HttpServletRequest request)
{
String strRequest = "";
Enumeration enumera = request.getHeaderNames();
while(enumera.hasMoreElements())
{
String Name = (String)enumera.nextElement();
String value = request.getHeader(Name);
if(value != null)
{
strRequest += value+",";
}
}
return strRequest;
}
%>
<jsp:useBean id="jsp2BeanId" scope="session" class="test_project.Jsp2Bean" />
<jsp:setProperty name="jsp2BeanId" property="sample" value="<%= makeTable(request)%>" />
<jsp:getProperty name="jsp2BeanId" property="sample" />
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
</body>
</html>


jsp2Bean文件:

package test_project;

public class Jsp2Bean
{
private String sample;

public String getSample()
{
return sample;
}
public void setSample(String newValue)
{
if (newValue!=null)
{
sample = newValue;
}
}
}
IT凡人 2003-12-08
  • 打赏
  • 举报
回复
<jsp:setProperty name="upload" property="request" param="request"/>试一试
smallstrong 2003-12-08
  • 打赏
  • 举报
回复
protectxp(protect) :hehe,谢谢你的回答
呵呵,感觉你的汉语有些问题哦,"是不是指把对象属性拆分成基本类型,再合成吗?"
这句话我读起来感觉非常的别扭!
protectxp 2003-12-08
  • 打赏
  • 举报
回复
<%=request%>是字符串,
化整为零,把对象再分开,是不是指把对象属性拆分成基本类型,再合成吗?
smallstrong 2003-12-08
  • 打赏
  • 举报
回复
qukmei(鬼才) :非常高兴看到肯定答案,谢谢
可是你还没有说怎样传递啊?
能不能具体说明一下
1,用jsp:setProperty 传递对象时 在jsp中怎样写?
2,你建议的"化整为零,把对象再分开",我不知道该怎样去做

再加30分以示感谢!
smallstrong 2003-12-08
  • 打赏
  • 举报
回复
junyi2003(超级菜鸟) : 谢谢

protectxp(protect):同意你的观点,scriptlet确实很好用,已经成功了,谢谢.
这几句话没有看懂" <jsp:setProperty name="upload" property="request" value="<%=request%>"/>
是不是就该是对象?
可是<%=expr%>在jsp里面一直是变成out.println(expr1);
大部分人会不会直接就认为<%=request%>就该是个字符串?",能明确说一下你的意思吗?

有人能明确的告诉我可不可以用setProperty传递对象吗?
qukmei 2003-12-08
  • 打赏
  • 举报
回复
可以,但建议不要这样用,你可以化整为零,把对象再分开,哈,明白吗?对象变成javaBean来处理,这样可以好一些
protectxp 2003-12-08
  • 打赏
  • 举报
回复
为什么一定要标签,写个scriptlet就搞定了。
setProperty里面的value只能传递字符串,当然int之类也可以,但是实际上还是调用了
Integer.valueOf(String)这个方法,boolean类型等也类似。
在标签库里面标签和jsp页面传递对象时主要靠session或request对象,因为标签里面含有当前jsp页面的pageContext对象的引用,传递引用这一步在jsp运行时完成,但不用手工编写代码。但是作为一般的bean来说,只能手工调用ObjectName.setProperty(ObjectParm)方法,完成对象传递,至少第一个对象要这样,例如你要给的request对象。
至于为什么没有传递对象的功能,
我的一个认为是,标签语言表现能力有限,而且比起程序语言,更容易不严密。
<jsp:setProperty name="upload" property="request" value=request/>
语法错误
<jsp:setProperty name="upload" property="request" value="request"/>
传递字符串"request"。
<jsp:setProperty name="upload" property="request" value="<%=request%>"/>
是不是就该是对象?
可是<%=expr%>在jsp里面一直是变成out.println(expr1);
大部分人会不会直接就认为<%=request%>就该是个字符串?

至于把out对象给bean的事让bean输出不是个好主意,标签才是干这个事的,bean该离view远些。
junyi2003 2003-12-08
  • 打赏
  • 举报
回复
value属性可以是运行时表达式,只要它是一个String.
value属性String可以自动地转换成boolean,byte,char,double,int,float,long和等价类。其他的转换需要在bean的setPropertyName()方法中显式地处理。
junyi2003 2003-12-08
  • 打赏
  • 举报
回复
应该是可以的,FAQ里有篇<<可以直接在Bean里向页面上进行输出吗?可以的话如何做?>>
的帖子,有人回答可以把out对象传递给bean,但没有说明在jsp中怎样传
我想传递request给bean,在jsp中这样写的: <jsp:setProperty name="upload" property="request" value=request />

可出现错误:org.apache.jasper.JasperException: /upload_log.jsp(27,61) quote symbol expected

有人知道该怎样作吗?
加20分!
--------------------
那你自己做做看看啊,呵呵。
加载更多回复(3)

81,094

社区成员

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

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