gpt4 book ai didi

java - Spring 绑定(bind) : how to work with something like map?

转载 作者:行者123 更新时间:2023-12-02 06:09:45 25 4
gpt4 key购买 nike

我必须编写一个 WS,尊重我非常不喜欢的契约(Contract),但这就是工作。

对于给定的请求,我有一些简单的命名参数,例如 user(Integer)。

目前,这很简单,我用这两个字段编写了一个命令对象,我的请求是:

@RequestMapping("/")
public void request(Cmd cmd) {
[impl]
}

现在不好的部分:我可以有任意几个 ID=blabla,blabla,blabla

例如,请求可以是/?user=4&10=ok&3432=Simple, effective

您是否有任何解决方案可以像在对象命令中使用 Map 一样好,并带有一两个 Spring 绑定(bind)注释?当然,如果用户(和其他类似的人)不包含在 map 中那就太好了 ^^

因为我在端点代码中写了这样的东西,但我发现它很难看:

final Enumeration<String> paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = paramNames.nextElement();
String[] paramValues = request.getParameterValues(paramName);
cmd.getMap().put(Integer.valueOf(paramName), paramValues[0]);
}

编辑

我想要类似的东西(如果可能的话)

public class SubmitTaskCmd {
private Integer userID;
private String hash;
private Integer taskID;
private Map<Integer, String> others = new HashMap<Integer, String>();

public Map<Integer, String> getOthers() {
return others;
}

public void setOthers(final Map<Integer, String> others) {
this.test = test;
}

public Integer getUserID() {
return userID;
}

public void setUserID(final Integer userID) {
this.userID = userID;
}

public String getHash() {
return hash;
}

public void setHash(final String hash) {
this.hash = hash;
}

public void setTaskID(final Integer taskID) {
this.taskID = taskID;
}

public Integer getTaskID() {
return taskID;
}
}

最佳答案

除非我误解了,是的,非常简单

@RequestMapping("/")
public void request(@RequestParam MultiValueMap<String, String> allParams) {

请注意,@RequestParam 注释没有 name 属性。 This is explained in the javadoc of @RequestParam.

关于java - Spring 绑定(bind) : how to work with something like map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21989619/

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