gpt4 book ai didi

java - Play Framework flash 变量添加逗号以形成数据

转载 作者:行者123 更新时间:2023-11-30 11:50:34 28 4
gpt4 key购买 nike

我正在 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() 之后存储在闪存中的值,如 System.out.println(flash) 所示, 显示逗号​​。当我手动将值添加到 flash 时,逗号永远不会出现。

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

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

最佳答案

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

噗。

关于java - Play Framework flash 变量添加逗号以形成数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7918090/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com