日期:2014-05-17  浏览次数:20710 次

struts属性注射问题,在线等待
我在前台有几个字段,通过ajax提交到action中,在action中有一个实体bean对象,要提交的字段都是这个实体对象的属性,请问struts怎么自动把这些属性通过该对象的setter方法自动注值?实体对象是如下的topic,另外还有一个key,我也希望能通过它的setter方法将其值自动注入,现在的问题,实体对象topic的属性值没有注入,key的值也没有注入。我不知道哪里出错了,拜求各位高人给看一下!谢谢!
Java code

public class TopicAction {

    private TopicService topicService = null;

    private Topic topic = null;
    
    private String key = null;
    
    private List<File> files;
    
    public void setTopicServoce(TopicService topicService) {
        this.topicService = topicService;
    }

    public Topic getTopic() {
        return topic;
    }

    public void setTopic(Topic topic) {
        this.topic = topic;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public List<File> getFiles() {
        return files;
    }

    public void setFiles(List<File> files) {
        this.files = files;
    }

    public TopicAction(){
         }
    
    public void post(){
    
        //HttpServletRequest request = ServletActionContext.getRequest();
        System.out.println(key);
             topicService.pubTopic(topic, files, key);
        
        
    }
    
}


下面是前台代码,其中fid、author、title、content是上面topic对象中的字段,key是单独的字段
 
JScript code

                                            $.ajax({
                     url:'forum/postTopic.action',
                     type:'post',
                     data:
                                               { fid:1,author:'ljg',title:'test',content:'content',key:'ko'},
                     async :true,
                     success:function(data)
                     {        
                        if(data=='success'){
                           alert('成功!');    
                        }
                     }
                     });




------解决方案--------------------
也可以采用data:{'topic.id':1,'topic.name':'休闲鞋'}由于js中定义对象的属性不能有.的存在所以这里需要用引号,这样的话你aciton中就可以得到topic对象的值了,