【问题标题】:how to Populate fields from URL parameter in java Springbootjava - 如何从Java Spring Boot中的URL参数填充字段
【发布时间】:2021-10-12 11:18:21
【问题描述】:

查看表单时,我需要添加对通过 URL 参数将字段值传递给表单的支持,该表单将用于在加载时将值填充到表单中。应支持字段名称和值的 JSON 格式值。示例:

https://web/form/view?id=1&data={'fieldname':'value'}


    @RequestMapping(value = "/form/view", method = RequestMethod.GET)
    public ModelAndView viewDomainForm(HttpSession session, @ModelAttribute("command") FormBean inFormBean) {
    

        Form form = formService.getForm(inFormBean.getId());

        FormInstance formInstance = formInstanceService.createFormInstance(form);

        String formInstanceId = (String) session.getAttribute("formInstanceId");
        if (formInstanceId != null && formInstanceId.length() > 0) {
            formInstanceService.deleteFormInstanceById(formInstanceId);
        }
        formInstanceId = formInstance.getId();
        session.setAttribute("formInstanceId", formInstanceId);

        FormBean formBean = prepareFormBean(form);
        formBean.setEmbed(inFormBean.isEmbed());
        formBean.setFormInstanceId(formInstance.getId());

        Map<String, Object> model = new HashMap<String, Object>();
        model.put("externalBaseUrl", configurationService.getValue("core.external.url.base"));
        model.put("fromTaskList", false);
        model.put("form", formBean);
        model.put("flow", new FlowBean());
        model.put("task", new TaskBean());
        return new ModelAndView("form-viewer", model);
    }

我有这种查看方法。从 URL 参数填充字段的最佳方法是什么?

 public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

// this is the value that will populate into the form when it loads.

【问题讨论】:

    标签: java json spring-boot


    【解决方案1】:

    第一个问题,为什么不在请求正文中使用POSTJSON

    如果JSON 很大,那么您将遇到URL 限制问题。而且您必须使用 % 和不同的分隔符对您的 URL 进行编码,这将使其更难调试。

    但这是可行的。 假设您正确编码了您的 URL,并且 JSON 格式为 query param。 您可以做的是接收它并遍历它并创建/填充您的表单或将其映射到一个对象并使用它:

    public ModelAndView viewDomainForm(... @RequestParam("data") String jsonDataInUrl...) 
    {
       // Work with jsonDataInUrl either through parsing it or through transforming it into a java bean.
       ...
    }
    

    Here 是一个 URL 解码器/编码器,以备不时之需。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-07
      • 2021-01-02
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 2019-01-20
      • 1970-01-01
      相关资源
      最近更新 更多