java web项目遇到request.getParameter()无法获得值的情况了

流离影风 发布于 2015/12/04 13:54
阅读 1K+
收藏 0

如题,下面贴代码:

@Controller
@RequestMapping("music")
public class MusicController {

@RequestMapping(params = "savemusic")
    public ModelAndView saveMusic(HttpServletRequest request) {

        String id = request.getParameter("id");
        String name = request.getParameter("name");
        String singer = request.getParameter("singer");
        String year = request.getParameter("year");
        String source = request.getParameter("source");

        Music music = new Music();
        music.setName(name);
        music.setSinger(singer);
        music.setYear(year);
        music.setSource(source);
        logger.info(id+" "+name+" "+singer+" "+year+" "+source);

        if (id != null && !id.equals("")) {
            music.setId(Integer.parseInt(id));
            musicservice.update(music);
        } else {
            musicservice.save(music);
        }
        return showMusicList(request);
    }

}

jsp页面代码如下:

<form action="music?savemusic" method="post" enctype="application/x-www-form-urlencoded">
        <input type="hidden" name="id" value="${id }" />
        <table>
            <tr>
                <td class="message_name">歌名:</td>
                <td><input name="name" type="text" value="${name}"
                    class="message_input" />
                </td>
            </tr>
            <tr>
                <td class="message_name">歌手:</td>
                <td><input name="singer" type="text" value="${singer}"
                    class="message_input" />
                </td>
            </tr>
            <tr>
                <td class="message_name">歌曲上传:</td>
                <td><input type="file" name="audio" value="${audios}"
                    class="file" />
                </td>
            </tr>
            <tr>
                <td class="message_name">发布年份:</td>
                <td><input name="year" type="text" value="${year}"
                    class="message_input" />
                </td>
            </tr>
            <tr>
                <td class="message_name">歌曲来源:</td>
                <td><input name="source" type="text" value="${source}"
                    class="message_input" />
                </td>
            </tr>
            <tr>
                <td class="message_name"><input type="submit" value="提交"
                    class="button1" /></td>
                <td><input type="button" value="返回"
                    onclick="javascript:history.back(-1)" class="button2" /></td>
            </tr>
        </table>
    </form>

因为没有做上传处理,所以audios先不写,但结果却是所有的request.getParameter()都没法获得表单数据

这个是怎么回事?

加载中
0
F
ForTheFree
因为你设置了form的 enctype属性 这样就不能直接用request取得
流离影风
流离影风
可是现在就算不设置也没法获取到啊,只是这个不行,我写的别的页面的添加操作却可以获取到的
0
小小志
小小志
修改代码
@RequestMapping("/music") 
@RequestMapping(value = "/savemusic", method = RequestMethod.POST)
小小志
小小志
回复 @流离影风 : form action="music?savemusic" 这中间的?改为反斜杠
流离影风
流离影风
你这种办法也没法完成,
0
消失的北极星
消失的北极星
你已经写了input="file" 的控件了  你的enctype该换成  form-data的形式的   我也不知道对不对 你试试
0
南湖船老大
南湖船老大
如果表单中有上传的话,就不能直接用request来取参数了
@RequestMapping({ "/post7" })
	public String post7(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException {
		// 转型为MultipartHttpRequest:   
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;   
        // 获得文件:   
        MultipartFile file = multipartRequest.getFile("head");
        if(!Tool.isImage(file)){
        	System.out.println("上传的不是图片。。。");
        }
        Tool.upload(file, "upload",false);
		return "hello";
	}
流离影风
流离影风
我现在把上传文件部分去掉,input都是text属性的,但是还是没法得到输入的数据
0
流离影风
流离影风
<form action="music?savemusic&pageindex=1" method="post" >
        <input type="hidden" name="musicid" value="${id }">
        <table border="1">
            <tr>
                <td>musicname</td>
                <td><input type="text" name="musicname" value="${name }" /></td>
            </tr>
            <tr>
                <td>musicsinger</td>
                <td><input type="text" name="musicsinger" value="${singer }">
                </td>
            </tr>
            <tr>
                <td>musicsource</td>
                <td><input type="text" name="musicsource" value="${source }">
                </td>
            </tr>
            <tr>
                <td>musicyear</td>
                <td><input type="text" name="musicyear" value="${year }">
                </td>
            </tr>
            <tr>
                <td><input type="submit" value="提交" /></td>
                <td><input type="reset" value="重置"></td>
            </tr>

        </table>
    </form>


    @RequestMapping(params = "savemusic")
    public ModelAndView saveMusic(HttpServletRequest request) {
        String musicid = request.getParameter("musicid");
        String musicname = request.getParameter("musicname");
        String musicsinger = request.getParameter("musicsinger");
        String musicyear = request.getParameter("musicyear");
        String musicsource = request.getParameter("musicsource");

        Music music = new Music();
        music.setName(musicname);
        music.setSinger(musicsinger);
        music.setSource(musicsource);
        music.setYear(musicyear);

        logger.info(musicname + musicsinger + musicsource + musicyear);
        if (musicid != null) {
            music.setId(Integer.parseInt(musicid));
            musicservice.update(music);
        } else {
            musicservice.save(music);
        }
        return showMusicList(request);
    }


0
流离影风
流离影风
现在就算是最简单表单也没法得到数据,很郁闷的是 ,与它类似的另一个对象的修改添加操作都能成功进行
返回顶部
顶部