使用超链接传值时,能不能传递一个对象?

robyjeffding 2009-02-19 10:20:42
这段代码:
<a href="showMsg.jsp?topicid=<%=topic.getTopicId() %>">主题</a>
可以传递一个主题的ID号,但能不能传递一个主题对象了?像这样:
<a href="showMsg.jsp?topic=<%=topic %>">主题</a>
请高手请教!
...全文
685 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
niuxinlong 2009-02-20
  • 打赏
  • 举报
回复
不行吧,getparameter取出来是字符串啊
ffhelly 2009-02-20
  • 打赏
  • 举报
回复
观望学习中。。。
iwantnba 2009-02-20
  • 打赏
  • 举报
回复
暂时停盘,观望...
BearKin 2009-02-20
  • 打赏
  • 举报
回复
传不了对象
cccpu 2009-02-20
  • 打赏
  • 举报
回复
不行
timber85zh_01 2009-02-20
  • 打赏
  • 举报
回复
传对象直接用POST被
  • 打赏
  • 举报
回复
如果你写过js肯定知道JS中有json对象,你传一个那样的串过去eval("("+str+")")就可以得到一个对象。
Java中没有这样的机制但我们可以借鉴下他的思路。需要自己写一个这样的解析程序
veardn 2009-02-20
  • 打赏
  • 举报
回复
可以把&id=1&name=2..反射给一个对象,不过要自己写代码来做
  • 打赏
  • 举报
回复
to:zjc_love

你这样只是调用对象的toString方法,还有 在System.out.println()中,即使你不显示调用,也是会调用对象的
toString()方法的。
至于在url中 是否能直接 传递 object ,也没接触过,这地方考虑到 页面请求和响应信息 都是String,不能
单独的就 能输出字符串 就肯定能传递 object吧


一般页面对象传递 不是用request/session的 setAttribute这些函数么

你所说的没错,一般确实用不着这样传对象。一个session.setAttribute()和session.getAttribute()
就可以了,我只是想讨论下楼主说提问题的实现方案。

  • 打赏
  • 举报
回复
那段代码的作用是完成类似jsp中根据表单内容自动填充javaBean。El表达式和jstl没有用过,刚接触
jsp没多久,对框架这些东西不熟悉,不知道是否如你所说可以自动完成我代码中的那些功能
zjc_love 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xingqiliudehuanghun 的回复:]
那些说不行的人肯定没有试过,可以肯定的说对于可以用字符串来表示的、
由简单对象组成的简单类型绝对没有问题,下面是一个简单的例子,如果
你想传递的数据类型多一些可以稍微该一下toString和initFromString,比如
你可以增加几行代码使可以不知传递字符
{name:(string)王建波,gender(string)男,age:(int)26}

Java codepackagecom.test;importjava.lang.reflect.Constructor;importjava.lang.reflect.Method;importjava…
[/Quote]

你这样只是调用对象的toString方法,还有 在System.out.println()中,即使你不显示调用,也是会调用对象的
toString()方法的。
至于在url中 是否能直接 传递 object ,也没接触过,这地方考虑到 页面请求和响应信息 都是String,不能
单独的就 能输出字符串 就肯定能传递 object吧


一般页面对象传递 不是用request/session的 setAttribute这些函数么
wangpeng88888888 2009-02-20
  • 打赏
  • 举报
回复
mark
sun_zhicheng 2009-02-20
  • 打赏
  • 举报
回复
你这个完全可以用EL表达式嘛 或者jstl啊
  • 打赏
  • 举报
回复
那些说不行的人肯定没有试过,可以肯定的说对于可以用字符串来表示的、
由简单对象组成的简单类型绝对没有问题,下面是一个简单的例子,如果
你想传递的数据类型多一些可以稍微该一下toString和initFromString,比如
你可以增加几行代码使可以不知传递字符
{name:(string)王建波,gender(string)男,age:(int)26}

package com.test;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.net.URLDecoder;
import java.net.URLEncoder;

public class Demo1 {
public static void main(String[] args){
Men m1=new Men();
m1.setName("王建波");
m1.setGender("男");
m1.setAge("26");
System.out.println(m1.toString());

String sUrl="www.yourweb.com?params="+URLEncoder.encode(m1.toString());
System.out.println("------------------");
System.out.println(sUrl);
System.out.println("------------------");

String sParams=sUrl.substring(sUrl.indexOf('?')+1);
sParams=URLDecoder.decode(sParams);
Men m2=new Men();
try{
m2.initFromString(sParams);
System.out.println(m2.toString());
}catch(Exception e){
e.printStackTrace();
}

}
}

class Men{
private String name="";
private String gender="";
private String age="";

public String toString(){
StringBuffer sb=new StringBuffer();

sb.append("{");
sb.append("name:"+this.name);
sb.append(",gender:"+this.gender);
sb.append(",age:"+this.age);
sb.append("}");

return sb.toString();
}

public void initFromString(String sParams) throws Exception{
Method[] methods=this.getClass().getMethods();
Map mapParams=new HashMap();

Pattern pParams=Pattern.compile("(\\w+):(.*?)(?=\\s*,|\\s*})");
Matcher mParams=pParams.matcher(sParams);
while(mParams.find()){
mapParams.put(
mParams.group(1).toLowerCase(),
mParams.group(2));
}

Pattern pMethod=Pattern.compile("^set(\\w+)$");
Matcher mMethod;
String sKey,sValue;
for(Method m:methods){
mMethod=pMethod.matcher(m.getName());
if(mMethod.find()){
sKey=mMethod.group(1).toLowerCase();
sValue=(String)mapParams.get(sKey);
m.invoke(this,new String[]{sValue});
}
}
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}



qq707472 2009-02-19
  • 打赏
  • 举报
回复
不行吧
  • 打赏
  • 举报
回复
不知道这样行不,让你的对象支持序列化,然后把序列化的值传过去。比如一个Map可以传一个这样的串
过去[{key:1,value:2},{key;2,value:4}]
ip_moon 2009-02-19
  • 打赏
  • 举报
回复
不行的~
类似于map,键值要匹配~
topic的值是什么?呵呵~

81,094

社区成员

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

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