性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-13 10:25 资料 主页 文集 短消息 看全部作者
txladd.jsp
<form name=f1 action="txladdnew.jsp" method=post>
<td align=left><input type=text name=name>  <font color=blue size=5>*</font></td>
这是表单里的控件名,提交这个控件保存的姓名值

txladdnew.jsp
<jsp:useBean id="txlInfo" scope="page" class="txl.TxlInfo">
<jsp:setProperty name="txlInfo" property="*"/>
</jsp:useBean>


TxlInfo.java
public class TxlInfo{
    String name;
    String dz;
    String dh;
    int yb;
    String oicq;
   
    public void setName(String name){
        this.name=name;
    }
  public void setDz(String dz){
        this.dz=dz;
    }

我不明白的是usebean的自醒机制到底怎么去判断提交的变量用哪个方法其执行,比如这里我提交的是“name”,但TxlInfo里不止有一个set方法,是根据哪个值判断name用相应的set方法处理呢


顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-13 11:21 资料 主页 文集 短消息 看全部作者
我大致看明白两位说的了,就是说关键在于TxlInfo.java中
String name;
String dz;
String dh;
int yb;
String oicq;

这个name属性要和前面的name同名,所以能正确传递
而maxwell说的也是我之前一直有疑惑的问题,现在看来不可能了


顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-13 11:25 资料 主页 文集 短消息 看全部作者


QUOTE:
原帖由Maxwell于2005-01-13, 11:17:21发表
不懂jsp,不过看起来有点像属性的样子,不知道是否setXXXX自动为XXXX属性的写函数,如果是的话,name=name就应该调用name的写函数了,或者另有其他方法把一个函数跟一个属性关联起来。

看了楼上的好像我猜对了  

不是把,我怎么理解的是 之所以正确传递,是因为
public void setName(String name){
    this.name=name;
  }
里面的this.name,而不是setName
,就是说是红色的决定,而不是蓝色的决定
顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-13 11:35 资料 主页 文集 短消息 看全部作者
不好意思再问个问题<jsp:setProperty name="txlInfo" property="name" param="name"/>
我怎么都试不出来是哪个颜色传给后面的setName方法处理,这两个的值有什么联系吗
顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-13 11:45 资料 主页 文集 短消息 看全部作者
谢谢各位,我猜我真的明白了,<jsp:setProperty name="txlInfo" property="name" param="name"/>

property="name" 的名字是由txlInfo中的String name属性决定的,一致即可
param="name"/和表单中的控件名一致,然后把蓝色的通过方法赋值给红色的属性
顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-13 13:37 资料 主页 文集 短消息 看全部作者


QUOTE:
原帖由Maxwell于2005-01-13, 13:12:16发表
大致看了一下,不懂。
我的意思是这样,如果出现这样的情况
public void setName(String name)
{
    this.name = name;
    this.dz = name;
}
或者
public void setName(String name)
{
    this.name = name;
}

public void setDz(String dz)
{
    this.name = dz;
}

那name=name的时候会出现什么情况?

我也晕了,容我晚上试试
顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-13 13:50 资料 主页 文集 短消息 看全部作者


QUOTE:
原帖由Maxwell于2005-01-13, 13:45:28发表

QUOTE:
原帖由金圭子于2005-01-13, 13:22:39发表
要回去看看jsp的书了。
反正就算不是jsp,这么用顶多就三种情况:

1.一个值付给两个变量
2.一个变量被付了两次值,后面的覆盖前面的。
3.报错

就是基于这种比较晕的情况,我觉得还是用如下的方法好
1. XXXX属性的读写自动由GetXXXX和SetXXXX完成,我怎么记得java就是这么做的?  好像vb也这样?
2. 指定read=xxxx, write=xxxx,bcb是这么做的,我比较习惯  

刚才金给的连接上的文档没提这种用法,setName()能直接取Name首字母小写后的变量
顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-13 14:08 资料 主页 文集 短消息 看全部作者
行了,无关的话请maxwell删除,我上学去了,等我试过之后给大家答案
顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-13 23:55 资料 主页 文集 短消息 看全部作者


QUOTE:
原帖由Maxwell于2005-01-13, 15:37:10发表
好像明白点了。

我保证你听完我的又糊涂了,经过2个小时的反复试验,发现在指定方法时
<jsp:setProperty name="txlInfo" property="name" param="name"/>

public void setName(String name)
{
  this.name = name;
  
}
红色部分一致才能取到值,和其他如控件名蓝色部分无关,property="*"估计也差不多

不过还没完如果按你之前设想的
public String userName;
        public String password;
        public int age;
       
        public void setUserNamea(String name)
        {
                this.password=name;
        }
        public void setPassworda(String password)
       
        {
                this.userName=password;
        }
        public void setAgea(int age1)
        {
                this.age=age1;
               
                }
我把name和password换位置,如果之前得到的结果是 1、2、3 现在就是2、1、3
注册成功:

--------------------------------------------------------------------------------
使用bean属性方法:
用户名:2
密码: 1
年龄: 3

--------------------------------------------------------------------------------
使用 getProperty动作)
用户名:2
密码: 1
年龄: 3
这么说又好像推翻了我开始的结论,我彻底晕了
顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-14 09:34 资料 主页 文集 短消息 看全部作者


QUOTE:
原帖由loranrowe于2005-01-14, 9:16:44发表

jsp中引用的属性和bean(class)中的属性是两个概念
如果你认真看完我上面贴的代码
应该能够有所理解
jsp中set(get) property="XXX"指定的值,事实上对应于bean中相应的方法名

我当然看了,书上写的也一样,几个人经验 也应该是这个理论,不过怎么试都不行,是不是其它方面的问题,我试的时候好像每次都重起tomcat还有其他要注意的吗
顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-14 10:17 资料 主页 文集 短消息 看全部作者
我现在不明白的是属性怎么跟表单连接起来的,

是由<jsp:useBean id=xxx>这个决定的,当html把用户填入的值submit到jsp时,jsp中<jsp:useBean id=xxx class=aaa>有这个动作,所以能自动调用(自醒机制)aaa中的方法,具体通过什么就是一直在讨论的
顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-14 10:29 资料 主页 文集 短消息 看全部作者


QUOTE:
原帖由Maxwell于2005-01-14, 10:23:16发表
<input type=text name=a>
<jsp:setProperty name="txlInfo" property="b" param="a"/>

public void setB(String str){
    this.c=str;
}

我认为是这样,表单里的名字要跟param一样,property的名字要跟方法对应,就是同样颜色的要对应,至于变量名就随便起了,比如叫c。

public String userName;
        public String password;
        public int age;
       
        public void setUserNamea(String name)
        {
                this.password=name;

蓝色部分我昨天初步试也认为是这样,刚才看错了,maxwell兄的经验果然丰富
顶部
性别:男-离线 kingofworl

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
好贴 1
功绩 21
帖子 1022
编号 18811
注册 2004-10-12


发表于 2005-1-14 10:40 资料 主页 文集 短消息 看全部作者
我有试验了一下,事实正如maxwell兄所举例子,实际上大家早就这么说了,都怪我之前没理解,至此终于明白了
顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2025-8-28 20:51
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.012682 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP