java - 无法弄清楚如何从 Java EE Spring Web 项目中的表单中获取数据

标签 java spring web-applications

我感觉自己像个十足的白痴,在工作的最后 5 个小时里,我试图弄清楚 Spring 以及如何做到这一点。

我在“checklist.jsp”中有一个表单,我想获取用户放入表单中的数据。我稍后会使用该数据,但我现在只想捕获它......

我有 checklist.jsp,它有一个名为“ChecklistController.java”的 Controller 。 这是我在 checklist.jsp 中的表单

<form method="POST" action="checklist.jsp">
    <table>
    <tr>
        <td>FQDN:</td>
        <td colspan="2"><input type='text' id="FQDN" /></td>
        <td><input type="radio" id="rdoScript" /></td>
        <td>Script 1 </td>
        <td><input type="radio" id="rdoScript" /></td>
        <td>Script 2</td>
    </tr>
    </table>
    <input type="submit" value="Run" id="selectionSubmit" />
 </form>

请注意:我使用了标签,但我更改了它,以便我可以实际看到该页面。我一直在反复玩弄它。

这是我的 ChecklistController.java

@Controller
// handling methods are relative to this controller
public class ChecklistController {
    private ChecklistService service;
    private static final Log LOG = LogFactory.getLog(ChecklistController.class);

    @RequestMapping("/checklist")
    public ModelAndView checklist() throws Exception{
        ModelAndView mavChecklist = new ModelAndView("checklist");
        mavChecklist.addObject("test",service.simpleTest());
        mavChecklist.addObject("date",service.getDateTime());
        return mavChecklist;
    }


    @Autowired
    public void setService(ChecklistService service){
        this.service = service;
    }
}

我的想法是将数据放入一个bean中,所以我创建了这个类。 UserSel.java

public class UserSel implements java.io.Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private String script;
    private String FQDN;

    public UserSel(){
    }

    public String getFQDN() {
        return FQDN;
    }

    public void setFQDN(String fqdn) {
        FQDN = fqdn;
    }

    public String getScript() {
        return script;
    }

    public void setScript(String script) {
        this.script = script;
    }
}

我希望我提供了足够的信息。 我想要获取 FQDN 和脚本选择,并能够使用用户的这些选择(以运行远程脚本)。

如果需要更多信息,请告诉我 -- 我现在对 Spring 感到沮丧:(

编辑: 添加当前的ChecklistController.java

@Controller
// handling methods are relative to this controller
public class ChecklistController {
private ChecklistService service;
private static final Log LOG = LogFactory.getLog(ChecklistController.class);


@RequestMapping("/checklist")
public ModelAndView checklist(@ModelAttribute(value="UserSel")UserSel userSel) throws Exception{
    ModelAndView mav = viewRender();
    String FQDN = userSel.getFQDN();
    String getScript = userSel.getScript();
    mav.addObject("FQDN", FQDN);
    mav.addObject("script",getScript);
    return mav; 
}

@RequestMapping("/newchecklist")
public ModelAndView viewRender() {
    ModelAndView mav=new ModelAndView();
    mav.addObject("UserSel ", new UserSel ());
    mav.setViewName("checklist");
    return mav;
}

@Autowired
public void setService(ChecklistService service){
    this.service = service;
}
}

最佳答案

1) 添加spring的表单tld。并像这样重写你的表单

<form:form commandName="UserInfo" method="POST" action="/web/checklist">
  <tr>
        <td>FQDN:</td>
        <td colspan="2"><input path="FQDN" /></td>
        <td><form:radiobutton path="script" value="1"/></td>
        <td><form:radiobutton path="script" value="2"/></td>
    </tr>
    <input type="submit" value="Save Changes" />
</form:form>

2.修改 Controller 以获取提交的值。

@Controller
// handling methods are relative to this controller
public class ChecklistController {
    private ChecklistService service;
    private static final Log LOG = LogFactory.getLog(ChecklistController.class);

    //Called when you submit data and access it like this.
    @RequestMapping("/checklist")
    public ModelAndView checklist(@ModelAttribute(value="UserSel")UserSel userSel) throws Exception{

        //userSel.get..... you will get submited values like this here. Use your service class here. And return appropriate ModelAndView

        return mavChecklist;
    }

    //Call this method first to get blank jsp. This will bind your dataclass to jsp, in which you will get data once you submit.
     @RequestMapping("/newcheklist")
    public ModelAndView viewRender() {
        ModelAndView mav=new ModelAndView();
        mav.addObject("UserSel ", new UserSel ());
        mav.setViewName("checklist");
        return mav;
    }
    @Autowired
    public void setService(ChecklistService service){
        this.service = service;
    }
}

由于您没有提供更多代码(例如上下文文件),我需要采取某些假设

关于java - 无法弄清楚如何从 Java EE Spring Web 项目中的表单中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11441252/

相关文章:

java - 使用 Spring 集成发送成功的 FTP 文件上传消息

node.js - 将 Node.js 应用程序分成多个

java - while 循环中的 Thread.sleep() 无法正常工作?

java - 如何使用另一个类的方法? (从Processing导出的android项目)

java - 为什么我的测试不能从其父级继承其 ContextConfiguration 位置?

database - 从充满数字的数据库创建图形或图表的软件包?

javascript - 配额超出错误 : The quota has been exceeded - progressive web app offline mode

java - GWT 编辑器框架 - 在自己的编辑器中使用 ValueListBox 显示 ENUM

java - 如何验证字符串是否为 JWT token ?

spring - Feign 客户端和 Spring 重试