`
liyixing1
  • 浏览: 961741 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

string-map-prefix string-list-suffix

 
阅读更多
一般service都是用在event,所以主要看serviceeventhandler就可以了。

先看string-map-prefix

在serviceeventhandler中的代码

  Map<String, Object> serviceContext = FastMap.newInstance();
        for (ModelParam modelParam: model.getInModelParamList()) {
            String name = modelParam.name;
ofbiz10大概是233行


其中有

if (UtilValidate.isNotEmpty(modelParam.stringMapPrefix)) {
                Map<String, Object> paramMap = UtilHttp.makeParamMapWithPrefix(request, multiPartMap, modelParam.stringMapPrefix, null);

可以看出来makeParamMapWithPrefix才是将参数解析成map的代码
解析方式大概是
查找每个请求字段,看字段的名字是否以string-map-prefix开头
假设配置
<attribute name="names" mode="IN" type="Map"
string-map-prefix="_o_"></attribute>
请求

127.0.0.1:8080/l/control/processFirstForm?_o_names_1=1&_o_names_2=2

那么最后names这个map有内容
{names_1=1, names_2=2}
可以看到,只要_o_开头的参数都被解析成了map中的元素,另外一点就是前缀之后的参数名就是这个map的key了,如_o_names_1=1请求参数的names_1就是一个key。

string-list-suffix和string-map-prefix有点类似
通过
List<Object> paramList = UtilHttp.makeParamListWithSuffix(request, multiPartMap, modelParam.stringListSuffix, null);完成参数转化

请求http://127.0.0.1:8080/l/control/processFirstForm?names_o_=1&names1_o_=2
发送过去后,解析的时候,只要是以_o_结尾的参数,都会被加入到list,那么
names_o_=1&names1_o_=2
两个参数都是以_o_结尾的,自然都是会被加入到list中。
解析后的list有两个元素,分别是1和2。
分享到:
评论

相关推荐

    Java核心知识总结-笔记

    - `startsWith(String prefix)`/`endsWith(String suffix)`:判断字符串是否以指定的前缀或后缀开始或结束。 4. **字符和字符串的转换** - `toCharArray()`:将字符串转换为字符数组。 - Character类提供了对...

    Java常用类及集合操作

    - `startsWith(String prefix)`:判断是否以特定字符串开头。 - `indexOf(String str)`、`lastIndexOf(String str)`:查找子串位置。 - **比较操作**: - `equals(Object anObject)`:比较字符串内容是否相同。 ...

    java中常用的方法总结.pdf

    - `startsWith(String prefix)`:判断此字符串是否以指定的前缀开始。 - `endsWith(String suffix)`:判断此字符串是否以指定的后缀结束。 - `substring(int beginIndex, int endIndex)`:返回一个新字符串,它是此...

    springmybatis

    查询出列表,也就是返回list, 在我们这个例子中也就是 List&lt;User&gt; , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...

    分享SpringMVC归纳

    public String listItems(@RequestParam Map&lt;String, String&gt; params, Model model) { // 业务逻辑 return "itemsList"; } ``` 10. **文件上传** - 需要在SpringMVC配置文件中配置文件上传解析器。 ```xml ...

    Java SE基础.docx

    public boolean startsWith(String prefix); ``` **8. 比较字符串** 比较两个字符串是否相等(区分大小写): ```java public boolean equals(String anotherString); ``` 忽略大小写进行比较: ```java public...

    Java复习总结.doc

    `compareTo(String s)` 比较字符串,`equals(String s)` 判断相等,`trim()` 去除两端空白,`toLowerCase()` 和 `toUpperCase()` 转换大小写,`startsWith(String prefix)` 和 `endsWith(String suffix)` 检查前缀和...

    springMVC 多视图配置(Jsp Freemarket Json)实例

    Map&lt;String, String&gt; responseMap = new HashMap(); responseMap.put("message", "Hello from JSON"); return responseMap; } } ``` 这个例子展示了如何通过不同的视图解析器,根据请求的 URL 返回 JSP、...

    Mybatish和Ajax笔记

    public Map&lt;String, Object&gt; handleAjaxRequest(@RequestParam Map&lt;String, String&gt; params) { // 处理业务逻辑 List&lt;Movie&gt; movies = movieDao.getMovies(params); return Collections.singletonMap("movies", ...

    java-jsp springmvc-controller 传值到页面的方法

    然后,在Controller层的方法中,通过返回字符串拼接servlet.xml中定义的视图前缀(prefix)和后缀(suffix)来指定JSP页面的路径。下面是一个具体的例子: ```java @Controller @RequestMapping("/hello") public class...

    本项目主要通过一些详细的小列子讲述如何正确的使用FreeMarker

    Map&lt;String, Object&gt; model = new HashMap(); model.put("name", "User"); return new ModelAndView("hello.ftl", model); } ``` 4. **FreeMarker标签和指令**: - FreeMarker提供了丰富的内置标签和指令,如...

    SSH freemarker例子学习 拿来就能用 注释全面

    &lt;property name="suffix" value=".ftl"/&gt; ;charset=UTF-8"/&gt; ``` 接下来,我们创建一个FreeMarker模板。例如,有一个名为`index.ftl`的模板文件,它可能包含以下内容: ```html &lt;!DOCTYPE html&gt; ${title} ...

    spring mvc

    public void getUsers(Map&lt;String, List&lt;User&gt;&gt; mp) { List&lt;User&gt; users = userService.getAll(); mp.put("users", users); } ``` 此方法将在控制器的所有其他方法之前执行,并将所有用户数据放入`Map`中,之后...

    springboot整合jsp,实现公交车站路线图.docx

    public String search(HttpServletRequest request, String way) { // ... // 模糊查询路线并填充结果 // ... request.setAttribute("list", wayList); // 设置查询结果 return "way"; // 返回JSP页面展示结果 ...

    spring mvc上传下载

    对于多文件上传,你可以使用`MultipartFile`的`List`或`Map`类型: ```java @PostMapping("/uploadMultiple") public String handleMultipleFileUpload(@RequestParam List&lt;MultipartFile&gt; files) { for ...

    GifDecoder

    // map color and insert in destination int index = ((int) pixels[sx++]) & 0xff; int c = act[index]; if (c != 0) { dest[dx] = c; } dx++; } } } } /** * Gets the image contents of frame n. ...

    Spring中MVC模块代码详解

    String action = request.getParameter("action"); if ("list".equals(action)) { return this.list(request, response); } } protected ModelAndView list(HttpServletRequest request, HttpServletResponse...

    Google C++ Style Guide(Google C++编程规范)高清PDF

    link ▶You may use file names with a -inl.h suffix to define complex inline functions when needed. The definition of an inline function needs to be in a header file, so that the compiler has the ...

    Java 8 Stream 的终极技巧——Collectors 功能与操作方法详解

    * `joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)` 例如: ``` servers.stream().collect(Collectors.joining()); // 输出 FelordcnTomcatJettyUndertowResin servers.stream()....

Global site tag (gtag.js) - Google Analytics