【问题标题】:hashmap input in jspjsp中的hashmap输入
【发布时间】:2011-02-14 08:34:44
【问题描述】:

谁能告诉我如何在jsp中设置hashmap值?

对象是

汽车:

private Map<String, Float> myHashMap = new HashMap<String, Float>();

在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' />

【问题讨论】:

    标签: jsp spring-mvc


    【解决方案1】:

    这是可行的,使用 bean 和 jsp 标记的组合,但要注意 - 你做错了,你想要的是错误的(可能不是你需要的)。我的解决方案效果很好,但我认为你应该把它扔掉并改变你的应用程序(除非不可能或时间压力很大)。

    1. 如果您使用纯 jsp(而不是 JSF),那么 HTML 只是一个模板; JSP 不知道 "' 和 'pancakes' 之间的区别。JSP 中的表单不能做任何实际的事情(比如执行操作或将值推送到 bean)。你必须创建一个普通的 html 表单,捕获它的参数(使用隐式变量'param')并采取行动。

    2. 这种“捕捉和行动”并不真正属于 JSP。应该在其他地方完成。

    3. 在纯 JSP 中,可以使用 jsp:setProperty 在 java bean 之间以及 java bean 和不同请求属性(如参数或 cookie)之间移动数据。有一个问题:要编写的属性不能是动态的。

    4. 因此,为了实现您的目标,您必须编写一些 Java 代码,它需要一些静态属性(数据和目标映射)并使用它;更重要的是,使用必须发生在 setter 内部。它不可能是真正通用的,因为在运行时我们不知道映射中键和值的类型(由于擦除)。

    5. 小心轻放:

    // MapAppender

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-19
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      • 1970-01-01
      相关资源
      最近更新 更多