首页 文章

提交同一个jsp中的第二个表单时出错...需要建议

提问于
浏览
1

我有一个JSP说myPage.jsp

在jsp中,我有两个div

每个div包含一个表单如下:

div A:

<div class="validation-box">                
            <form:form id="compnay-detail" method="post" action="companySave.do" commandName="company">
                    <table cellpadding="0" cellspacing="0">
                        <tr>
                            <td class="col"><label>Address Type</label> <form:input type="text" path="addressType" class="textbox" name="addressType" id="addType" maxlength="20" />
                            </td>
                            <td class="col"><label>Street</label> <form:input path="street"
                            class="textbox" name="street" id="street" maxlength="50" />
                            </td>               
                        </tr>
                        <tr>
                            <td colspan="3" class="no-padding">
                                <div class="button-pannel margin-top">
                                <span class="lhscrv"> <span class="rhscrv"> <input type="submit" class="bttn" id="saveAddress" value="Save" />
                                </span>
                                </span> <span class="lhscrv"> <span class="rhscrv"> <input
                                        type="button" class="bttn" id="reset" value="Reset" />
                                </span>
                                </span> <span class="lhscrv"> <span class="rhscrv"> <input
                                        type="button" class="bttn" id="cancel" value="Cancel" />
                                </span>
                                </span>
                            </td>
                        </tr>
                    </table>
            </form:form>
            </div>

div B:

<div class="validation-box">                
            <form:form id="compnayAddDetail" method="post" action="test.do" commandName="address">
                    <table cellpadding="0" cellspacing="0">
                        <tr>
                            <td class="col"><label>Address Type</label> <form:input type="text" path="addressType" class="textbox" name="addressType" id="addType" maxlength="20" />
                            </td>
                            <td class="col"><label>Street</label> <form:input path="street"
                            class="textbox" name="street" id="street" maxlength="50" />
                            </td>               
                        </tr>
                        <tr>
                            <td colspan="3" class="no-padding">
                                <div class="button-pannel margin-top">
                                <span class="lhscrv"> <span class="rhscrv"> <input type="submit" class="bttn" id="saveAddress" value="Save" />
                                </span>
                                </span> <span class="lhscrv"> <span class="rhscrv"> <input
                                        type="button" class="bttn" id="reset" value="Reset" />
                                </span>
                                </span> <span class="lhscrv"> <span class="rhscrv"> <input
                                        type="button" class="bttn" id="cancel" value="Cancel" />
                                </span>
                                </span>
                            </td>
                        </tr>
                    </table>
            </form:form>
            </div>

MY CONTROLLER CLASS:

@RequestMapping("/companySave.do")
    public String saveCompany(Map<String, Object> map, @ModelAttribute("company")
    Company company,@ModelAttribute("address")
    CompanyAddress address, BindingResult result)
    {           
        //......   code.......
        return "redirect:/companyAddressPage/"+company.getId()+".do";

    }

    @RequestMapping("/companyAddressPage/{id}.do")
    public String companyAddressPage(@PathVariable("id") long id,Map<String, Object> map, @ModelAttribute("company")
    Company company,@ModelAttribute("address")
    CompanyAddress address, BindingResult result)
    {   //......   code.......
        return "myPage";
    }

    @RequestMapping("/test.do")
    public String saveAddressCompany(Map<String, Object> map, @ModelAttribute("company")
    Company company,@ModelAttribute("address")
    CompanyAddress address, BindingResult result)
    {   //......   code.......
        return "myPage";
    }

AIM:

在提交div中存在的第一个表单后,我想启用包含另一个表单的div B.

Problem :

第一种形式是正确提交,但是当我点击第二种形式的提交按钮时,它会抛出异常(动作甚至没有被调用)

Exception :

无法将值测试从类型'java.lang.String'转换为'long'类型;嵌套异常是java.lang.NumberFormatException:对于带有根本原因的输入字符串:“test”]

任何的想法....???

提前致谢...!!!

2 回答

  • 1

    无论你在@PathVariable中得到什么值,它总是只有String类型值 .

    所以不要使用

    @PathVariable("id") long id
    

    用这个

    @PathVariable("id") String id
    

    然后在使用函数之前手动将其转换为long .

    希望这对你有所帮助 .

    干杯 .

  • 0

    编辑:也看到评论 .

    您需要在第二个表单的action属性前面添加正斜杠:

    action="/test.do"
    

    否则你将最终到/companyAddressPage/test.do,因为你刚刚被重定向到/companyAddressPage/1.do(其中1是一个示例id) . 这是因为第二种形式的动作属性是相对的 .

相关问题