Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jsp中的hashmap输入_Jsp_Spring Mvc - Fatal编程技术网

jsp中的hashmap输入

jsp中的hashmap输入,jsp,spring-mvc,Jsp,Spring Mvc,有人能告诉我如何在jsp中设置hashmap值吗 对象是 配备: private Map<String, Float> myHashMap = new HashMap<String, Float>(); private Map myHashMap=new HashMap(); 在jsp中,我希望这样做 <input type='hidden' name='myobject.myHashmap["setvalue string"]' value='my value

有人能告诉我如何在jsp中设置hashmap值吗

对象是

配备:

private Map<String, Float> myHashMap = new HashMap<String, Float>();
private Map myHashMap=new HashMap();
在jsp中,我希望这样做

<input type='hidden' name='myobject.myHashmap["setvalue string"]' value='my value for string' />
<input type='hidden' name='myobject.myHashmap["setvalue float"]' value='my value for float' />

结合使用bean和jsp标记是可行的,但要小心——你做得不对,你想要的是错的(可能不是你需要的)。我的解决方案很有效,但我认为你应该扔掉它,无论如何都要改变你的应用程序(除非这是不可能的,或者时间压力很大)

  • 如果您使用的是纯jsp(与JSF相反),那么HTML只是一个模板;JSP不知道“”和“pancakes”之间的区别。JSP中的表单不能执行任何实际操作(如执行操作或将值推送到bean)。您必须创建一个普通的html表单,捕获其参数(使用隐式变量“param”)并执行act

  • 这种“捕捉和动作”实际上不属于JSP,应该在其他地方进行

  • 在纯JSP中,可以使用JSP:setProperty在java bean之间以及java bean与不同请求属性(如参数或cookie)之间移动数据

  • 因此,为了实现您的目标,您必须编写一点Java,它接受一些静态属性(数据和目标映射)并使用它;而且,使用必须发生在setter内部。它不能真正通用,因为在运行时我们不知道映射中的键和值的类型(由于擦除)

  • 小心处理:

  • 
    //映射器

    package a.b.c;
    
    import java.util.Map;
    
    public class MapAppender {
        private String key;
        private Float value;
    
        public void setKey(String key) {
            this.key = key;
        }
    
        public void setValue(Float value) {
            this.value = value;
        }
    
        public void setMap(Map map) {
            if (key != null && value != null) map.put(key, value);
        }
    
    }
    
    // How to use it on page:
    
    <jsp:useBean id="object"  scope="session" class="a.b.c.ObjectWithMap" />
    
    <jsp:useBean id="appender"  scope="request" class="a.b.c.MapAppender" />
    <jsp:setProperty name='appender' property='key' value='${param.string}' />
    <jsp:setProperty name='appender' property='value' value='${param.float}' />
    <jsp:setProperty name='appender' property='map' value='${object.map}' />
    
    <form>
        <input name='string' value='test' />
        <input name='float' value='3.25' />
        <input type="submit" />
    </form>
    
    a.b.c包;
    导入java.util.Map;
    公共类映射器{
    私钥;
    私人浮动价值;
    公共无效设置键(字符串键){
    this.key=key;
    }
    公共无效设置值(浮动值){
    这个值=值;
    }
    公共无效集合映射(映射映射){
    if(key!=null&&value!=null)map.put(key,value);
    }
    }
    //如何在第页使用它: