【问题标题】:Play Framework flash variable adding commas to form dataPlay Framework flash 变量添加逗号以形成数据
【发布时间】:2011-10-27 15:12:17
【问题描述】:

我正在 Play framework(java) 中验证一个表单,它在提交后向我的表单值添加逗号。

这是表格:

#{form @doCreate()}
    <input type="text" name="session.sessionName" value="${flash['session.sessionName']}"/>
    <input type="text" name="session.jumpDate"value="${flash['session.jumpDate']}"/>
    <select id="jumpers" multiple="multiple" name="jumpers[]" title="Click to Select a Jumper">
        ..several options here
   </select>
#{/form}

这是表单处理程序:

public static void doCreate(JumpSession session, String[] jumpers) {

    validation.required(session.getSessionName()).message("sessionName.required");
    validation.required(session.getJumpDate()).message("jumpDate.required");
    validation.required(jumpers).message("jumpers.required");


    if (validation.hasErrors()) {
        params.flash(); // add http parameters to the flash scope
        validation.keep(); // keep the errors for the next request
        create();
    }

    render();
}

create() 方法呈现与刚刚显示的相同的表单:

public static void create() {
    boolean isAuthorized = Security.isConnected();
    // Get the user details
    String userid = Security.connected();

    render(isAuthorized, userid);
}

验证一切正常,除了每个字段中的值在验证后在末尾添加了一个“,”字符。如果我提交一个完全空白的表单,它会在每个字段中返回一个逗号 (',') 字符。如果我只在一个字段中输入一个值,该值返回时会在末尾粘贴一个逗号。更重要的是,如果我再次提交,对于之前的每个逗号,现在还有 2 个逗号!

编辑: 我也尝试过使用${flash['session.jumpTime']?:""} 来确保实际定义了变量。

编辑: 它发生在 params.flash() 方法中。 System.out.println(params.allSimple()) 表明没有逗号,但在 params.flash() 之后存储在 flash 中的值,如 System.out.println(flash) 所示,显示逗号。当我手动将值添加到闪存时,逗号永远不会出现。

for (Map.Entry<String, String> entry : temp.entrySet())
        {
            flash.put(entry.getKey(), entry.getValue());
        }

这个 hack 解决了我的问题,但我仍然想知道为什么我不能只使用 params.flash()。

【问题讨论】:

    标签: java validation playframework flash-scope


    【解决方案1】:

    我发现了这个问题,毕竟它与 Play 无关。我使用的一个 javascript 库(jQuery 工具)在我不知情的情况下克隆了页面上的元素,从而创建了双重表单提交。由于每个表单元素都加倍,因此这些值用逗号分隔。这在 params 变量中是无法检测到的,因为它只在 .flash() 方法中插入了逗号。

    普肖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-05
      • 2023-04-01
      • 2023-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 2018-04-20
      相关资源
      最近更新 更多