Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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/4/json/14.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
Java 如何从会话|${user.get()}以JsonNode身份访问_Java_Json_Web Services_Servlets_El - Fatal编程技术网

Java 如何从会话|${user.get()}以JsonNode身份访问

Java 如何从会话|${user.get()}以JsonNode身份访问,java,json,web-services,servlets,el,Java,Json,Web Services,Servlets,El,我正在创建一个简单的会话对象(JsonNode) 他们试图这样访问它 ${user} // works print {"id":8,"name":"jones"..} ${user.id} // trows Error "Property 'id' not found on type org.codehaus.jackson.node.ObjectNode" ${user.get(0)} // nothing printed out. ${user.size()} // return 4, id

我正在创建一个简单的会话对象(JsonNode)

他们试图这样访问它

${user} // works print {"id":8,"name":"jones"..}
${user.id} // trows Error "Property 'id' not found on type org.codehaus.jackson.node.ObjectNode"
${user.get(0)} // nothing printed out.
${user.size()} // return 4, id,name,username,token

我该如何重新考虑我的代码来修复问题,甚至选择器?

除非您使用的是Tomcat 7,否则@mindas建议的版本应该可以工作。Tomcat7在使用jspel()调用重载方法时似乎有一个bug。你在用Tomcat7吗

${user.get(0)}
没有打印任何内容,因为该方法用于访问数组节点的指定元素的值。你的不是数组节点,如果你使用
${user.get(“id”)}
你应该得到
id
字段的值,除非你在Tomcat 7上,在那里你会得到一些错误,比如
不能将class java.lang.String类型的id转换为int


您可以使用
${user.findValue(“id”)}
尝试一个快速而肮脏的测试,看看您是否至少得到了一些结果,但是如果您不介意我说,我认为如果您不向JSP公开像
JsonNode
这样的原始对象,而是某种
user
,以及
id
的getter和setter,会更好,
名称
用户名
令牌
。然后,您可以在JSP中使用
${user.id}
,您将不会对Tomcat有任何问题。

关于
${user.get('id')}
?@mindas不,它似乎不起作用。是的,我正在使用Tomcat 7,是的,我得到“无法将类java.lang.String的id转换为int”错误,我该如何着手修复它?哦,顺便说一下,json对象非常安全,它有id、名称、令牌、没有密码或其他任何东西,我不明白为什么要使用用户obj?@Jessica:我不是说用用户对象替换JsonNode的安全性。我说的是你访问它的方式。EL从第一天起就知道如何在POJOs上与Getter合作。在JSP2.2中添加了对对象的调用方法,Tomcat为重载方法在对象上添加了chockes。JsonNode的字段没有getter,您需要调用一个重载方法来获取字段。从这里开始你的问题!如果将其替换为POJO,则使用${user.id}可以解决问题。如果您不想仅仅为此创建类,那么可以将JsonNodes包装在映射中,并使用${user[“id”]}。
${user} // works print {"id":8,"name":"jones"..}
${user.id} // trows Error "Property 'id' not found on type org.codehaus.jackson.node.ObjectNode"
${user.get(0)} // nothing printed out.
${user.size()} // return 4, id,name,username,token