标签: http-request-parameters

在Spring中,如何将整数列表绑定到RequestParam?

我有来自客户端的参数,例如

ids[] = 11
ids[] = 12
ids[] = 21
Run Code Online (Sandbox Code Playgroud)

在服务器端,我有一个Spring控制器,使用以下方法:

@RequestMapping("/delete.x")
public @ResponseBody Map<String, Object> delete(HttpServletRequest request, @RequestParam("ids[]") List<Integer> ids) {
Run Code Online (Sandbox Code Playgroud)

当我尝试迭代id的集合时,如下所示:

for (Integer id : ids) {
Run Code Online (Sandbox Code Playgroud)

我得到如下例外:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
Run Code Online (Sandbox Code Playgroud)

Spring是否将ID的类型更改为List <String>?无论我想如何,我如何避免这个问题并将ID作为整数存储在List中?

spring http-request-parameters

8
推荐指数
1
解决办法
2万
查看次数

依赖注入请求参数与CDI和JSF2

使用CDI和JSF2时如何将HTTP请求参数注入bean中?

cdi jsf-2 http-request-parameters

7
推荐指数
1
解决办法
6417
查看次数

为地图和/或嵌套对象自定义Spring @RequestParam反序列化

@RestController
class MyController {
     @RequestMapping(...)
     public void test(Container container) { ... }
}
Run Code Online (Sandbox Code Playgroud)

Spring默认使用Dot-Notation反序列化嵌套的@RequestParam:

class Container {
    A a;
}

class A {
    String val;
}
Run Code Online (Sandbox Code Playgroud)

适用于:

http://.../myController?a.val=foo
Run Code Online (Sandbox Code Playgroud)

但对于地图,它使用方形括号表示法:

class Container {
    Map<String, String> a;
}
Run Code Online (Sandbox Code Playgroud)

适用于:

http://.../myController?a[val]=foo
Run Code Online (Sandbox Code Playgroud)

当使用JavaScript时,HashMap和嵌套对象之间当然没有区别,因此所有内容都将使用Dots Square-Brackets进行序列化.


题:

如何/我在哪里可以告诉Spring(或Spring启动,如果这更容易)使用点符号(或方括号中)为两个,嵌套对象地图?

或者,有什么理由说Spring会对这些类型产生影响吗?

spring spring-mvc http-request-parameters spring-boot spring-4

7
推荐指数
1
解决办法
2170
查看次数

如何使用Struts标记测试给定的请求参数是否存在?

某些页面可以接收名为"P1"的特定请求参数:

page.do?P1=value1
Run Code Online (Sandbox Code Playgroud)

现在,scriptlet正在测试请求参数是否存在,如果P1是"value1",则会在页面上呈现一些信息.

我想使用Struts标签重写它,而不是使用scriptlet.

你能告诉我一些关于使用什么的提示吗?

替代scriptlet是这样的:

<%
String p1 = request.getParameter("P1");
if ("value1".equals(p1)) {
//do something
}
%>
Run Code Online (Sandbox Code Playgroud)

struts taglib java-ee http-request-parameters

6
推荐指数
1
解决办法
9094
查看次数

从表行传递多个具有相同名称的请求参数

我有一个带复选框的表,用户可以检查并删除表中的那一行.我有一切工作,但如果用户检查两个框,它只检索表上的第一个.

<tr>
  <td><input type="checkbox" name="id" value="${user.id}" /></td>
  <td><c:out value="${user.name}" /></td>
  <td><c:out value="${user.email}" /></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

这只是我的HTML的一个例子.这是我的servlet的一部分.

String id = request.getParameter("id");
Run Code Online (Sandbox Code Playgroud)

所以,再次,我可以选择第一个值,但我无法在同一个表上删除多个行.有没有我可以使用的功能或类似的东西?谢谢!

jsp servlets multiple-value http-request-parameters

6
推荐指数
1
解决办法
1万
查看次数

在GlassFish中将JSF输入提交值的请求字符编码设置为UTF-8

我在所有<h:inputText>字段中插入的值都有问题.某些字符未以正确的方式编码.例如,如果我ciò输入输入字段,我会得到ciò.

如何允许用户插入带有这些字符的文本并正确保存?不在DB编码中的问题,因为在将其插入DB之前我已经有错误的值.

我正在使用带有Facelets和GlassFish的JSF 2作为应用程序服务器.

jsf glassfish utf-8 character-encoding http-request-parameters

6
推荐指数
1
解决办法
3853
查看次数

将JSF输入提交值的请求字符编码设置为UTF-8

我遇到的问题与在GlassFish中将JSF输入提交值的设置请求字符编码设置为UTF-8相同,提交的值以Mojibake形式到达.但是,答案是针对GlassFish而我正在使用JBoss AS 7.

我已经指定了JDBC连接URL以使用UTF-8:

jdbc:mysql://localhost:3306/mydb?useUnicode=yes&characterEncoding=UTF-8
Run Code Online (Sandbox Code Playgroud)

在我的JSF页面顶部:

<?xml version='1.0' encoding='UTF-8' ?>
Run Code Online (Sandbox Code Playgroud)

如何在JBoss AS 7中解决同样的问题?或者更好,以更通用的方式使其适用于所有服务器?

jsf utf-8 character-encoding http-request-parameters

6
推荐指数
1
解决办法
2万
查看次数

如何在JSF中禁用jftfdi jffi查询参数

我尝试了最后一个版本的JavaServer Faces 2.2(Mojarra 2.2.4)并注意到以这种不受欢迎的方式更改了我的查询字符串:

page.jsf?jftfdi=&jffi=
Run Code Online (Sandbox Code Playgroud)

代替

page.jsf
Run Code Online (Sandbox Code Playgroud)

我发现它是新的JSF 2.2功能.但这些查询参数(jftfdi,jffi)破坏了我对SEO友好的网址.我该如何禁用它?

jsf http-request-parameters mojarra jsf-2.2 flow-scope

6
推荐指数
1
解决办法
1282
查看次数

Spring MVC:所有请求中的公共参数

我的Spring MVC Web应用程序中有很多控制器,并且有一个参数mandatoryParam可以说它必须存在于Web应用程序的所有请求中.

现在我想让我的web层和服务层中的所有方法都可以使用该param值.如何有效地处理这种情况?

目前我正在以这种方式处理它:

  • ... controllerMethod(@RequestParam String mandatoryParam,...)
  • 然后,通过调用它的方法将此参数传递给服务层

  • spring spring-mvc http-request-parameters

    6
    推荐指数
    2
    解决办法
    2840
    查看次数

    @ManagedProperty,请求参数未在@Named bean中设置

    我有一个CDI托管bean,我想将请求参数设置为托管属性:

    import javax.inject.Named;
    import javax.enterprise.context.RequestScoped;
    
    @Named
    @RequestScoped
    public class ActivationBean implements Serializable {
    
        @ManagedProperty(value="#{param.key}")
        private String key;
    
        @ManagedProperty(value="#{param.id}")
        private Long id;
    
        // Getters+setters
    
    Run Code Online (Sandbox Code Playgroud)

    domain/activate.jsf?key=98664defdb2a4f46a527043c451c3fcd&id=5但是,URL是永远不会设置和保留的属性null.

    这是怎么造成的,我该如何解决?

    我知道我可以从ExternalContext下面手动抓取它们:

    Long id = Long.parseLong(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id"), 10);
    String key = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("key");
    
    Run Code Online (Sandbox Code Playgroud)

    但是,我宁愿使用注射剂.

    jsf cdi managed-bean http-request-parameters managed-property

    6
    推荐指数
    1
    解决办法
    2574
    查看次数