2

以下のコードでは、リストとビューを正しく取得していますが、更新中に連結された最初のフィールド rsoCode のみに直面ています。更新フォームでは正しく表示されますが、

デバッグ中に、画面を更新するときに getRsoCode() が 2 回呼び出されることを確認しました (ここで値を変更できます)。

これはJSPコードです

<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<form:form action="" method="POST" commandName="updateRso">
<table>
    <tr>
        <td style="font-weight: bold; font-variant: small-caps;">RSO Code:</td>
        <td><form:input path="rsoCode" value="${updateRso.rsoCode}" disabled="disabled"/></td></tr>

    <tr><td style="font-weight: bold; font-variant: small-caps;">RSO Description:</td>
        <td><form:input path="rsoDescriprion" value="${updateRso.rsoDescriprion}"/></td>
    </tr>
    <tr>
        <td style="font-weight: bold; font-variant: small-caps;">Region Code:</td>
        <td><form:input path="regionCode" value="${updateRso.regionCode}"/></td></tr>
        <tr><td style="font-weight: bold; font-variant: small-caps;">Region Description:</td>
        <td><form:input path="regiondescription" value="${updateRso.regiondescription}"/></td>
    </tr>
    <tr>
        <td colspan="10" align="center">&nbsp;&nbsp;&nbsp;<input type="submit" value="Submit"/> </td>
    </tr>
    </table>
    </form:form>

コントローラーコード

@Controller
public class ListRsoController {

    private static final Logger logger = LoggerFactory.getLogger(ListRsoController.class);

    @ModelAttribute("updateRso")
    public ListRso getListRso()
    {

        ListRso updateRso = new ListRso();

        return updateRso;
    }

    @RequestMapping(value="listrso")
    public String listAllRso(ModelMap model) throws Exception{

        ListRsoDao listDao = new ListRsoDao();

        model.addAttribute("rsos", listDao.getList());

        return "listrso/view";
    }

    @RequestMapping(value="getRsoDetails")
    public String getRso(@RequestParam("rsoCode")String rsoCode, ModelMap model,HttpServletRequest req) throws Exception{

        ListRsoDao lstdto = new ListRsoDao();

        Object obj = lstdto.getRsoCode(rsoCode);

        model.addAttribute("savedClass", obj);

        return "listrso/viewdetails";
    }
    @RequestMapping(value="updateRsoDetails", method=RequestMethod.GET)
    public String updateRso(@RequestParam("rsoCode")String rsoCode, ModelMap model,HttpServletRequest req) throws Exception{

        ListRsoDao lstdto = new ListRsoDao();

        Object obj = lstdto.getRsoCode(rsoCode);

        model.addAttribute("updateRso", obj);

        return "listrso/updatedetails";

    }

    @RequestMapping(value="deleteRsoDetails")
    public String deleteRso(@RequestParam("rsoCode")ListRso rsoCode, ModelMap model,HttpServletRequest req) throws Exception{

        ListRsoDao lstdto = new ListRsoDao();

        lstdto.deleteRso(rsoCode);

        //model.addAttribute("savedClass", obj);

        return "listrso/deleteSuccess";
    }

    @RequestMapping(method = RequestMethod.POST, value="updateRsoDetails")
    protected String onSubmit( @ModelAttribute("updateRso") ListRso rsoCommand,  ModelMap model ) throws Exception
    {
        model.clear();
        new  ListRsoDao().updateRso(rsoCommand);
        model.addAttribute("savedClass", rsoCommand);
        return "listrso/view";
    }

}

ジャバビーン

public class ListRso {

    private String rsoCode;
    private String rsoDescriprion;
    private String regionCode;
    private String regiondescription;

    public ListRso(String rsoCode, String rsoDescriprion, String regionCode,
            String regiondescription) {
        super();
        this.rsoCode = rsoCode;
        this.rsoDescriprion = rsoDescriprion;
        this.regionCode = regionCode;
        this.regiondescription = regiondescription;
    }

    public ListRso(String rsoCode)
    {
        this.rsoCode = rsoCode;
    }
    public ListRso() {
        // TODO Auto-generated constructor stub
    }
    public String getRsoCode() {
        return rsoCode;
    }
    public void setRsoCode(String rsoCode) {
        this.rsoCode = rsoCode;
    }
    public String getRsoDescriprion() {
        return rsoDescriprion;
    }
    public void setRsoDescriprion(String rsoDescriprion) {
        this.rsoDescriprion = rsoDescriprion;
    }
    public String getRegionCode() {
        return regionCode;
    }
    public void setRegionCode(String regionCode) {
        this.regionCode = regionCode;
    }
    public String getRegiondescription() {
        return regiondescription;
    }
    public void setRegiondescription(String regiondescription) {
        this.regiondescription = regiondescription;
    }


}
4

2 に答える 2

3

あなたのフォームにはアクションがありません。これにより、スプリングタグが奇妙なことをします。この :

<form:form action="" method="POST" commandName="updateRso">

これを行うだけでよいことを意味します(値属性を削除すると、入力はパスから取り込まれます)

<table>
    <tr>
        <td style="font-weight: bold; font-variant: small-caps;">RSO Code:</td>
        <td><form:input path="rsoCode" disabled="disabled"/></td>
于 2013-04-10T09:18:14.527 に答える