是这样的,比如记录里有userid,我们需要在页面显示给用户的肯定是用户名字,而不能显示一个类似"43543532453244554677"这样的userid,而用户需要修改这个记录对应的用户时,也不能要求他填写一长串数字,对吧。只能让他填写用户名,比如修改这个记录的负责人,由张三改为王五,可这样在保存记录时,记录中并没有username这个字段,只保存userid,这就有个userid<->username的转换问题,用户给我们的是王五,我们难道还要在去数据库里取得userid吗?
如果较少的数据,可以用select,但对于用户这样的,用select肯定不行,只能让用户手工填写,不知道我的表达明白

解决方案 »

  1.   

    在下想到的办法就是在form-bean初始化时就取得对应的resultset,比如用户结果集合,部门结果集合,角色等等,然后在后台调用对应的工具类手工转换,不知道还有没有其他的办法,主要是:在struts中有没有已经提供的解决方案。如果有现成的最好。
      

  2.   

    不知道是我没看明白还是你说的有问题,我给你简化一下:
    你把名字给改了,也就是username给改了,然后你要保存的却是userid,对吧??
    那你改名字干什么,好玩啊。在做修改功能的时候,需要的信息本来就是:一个唯一的字段,和主键差不多了,也可以是这里的userid了,还有就是要修改的具体信息,比如用户姓名之类的。如果你根据username<->id了,那万一你的用户重名怎么办,这是绝对不合理的设计方法。
      

  3.   

    楼上的兄弟,我相信是你没有看明白,我解释的很清楚了。
    “比如修改这个记录的负责人,由张三改为王五”
    一条产品记录,可以有负责人,我修改负责人为别的某个人,有什么不可以的吗?但是这条记录在保存时,只会保存userid,我们不能让用户在修改负责人时去填写一个userid,他也不可能记得一个人的30位的userid,只能让他填名字或者类似wsd这种用户名缩写的形式。但是我们在保存时,产品表里,一般设计都是不会直接把用户名字当作个字段吧,一般都是userid,换句话,在该保存userid的地方,用户填写的是username.
    不是什么难问题,只是想知道struts中有没有现成的解决方法,还是只能自己手工转换。希望大家多多帮忙。
      

  4.   

    汗,我经常是的做法是,先从相关表读出来userid和username,再选择username,保存userid
      

  5.   

    你的意思也就是说:手工把人姓名给改了,然后保存的时候,根据这个人的姓名去找到他的userid,然后保存这个userid,对吗?
    如果这样的话,万一你所输入的重名怎么办?或者你用户输错了怎么办?比如一个人叫张名,用户可未必记得他是叫张名还是张明。
    我觉得这样绝对不是一个好办法,治标不治本。由用户手工填写才是真正的麻烦,试想想,如果我用户不是很多,我还要去手工输入,岂不是非常麻烦?至少你也得做两个可选项才行。另外,这种映射可以明确告诉你,没有这样的映射。如果你不自己写转换程序,肯定是不行的,这已经和你的业务逻辑沾边了,structs怎么知道你什么想法。