来自Java世界,基于WAR文件名设置基于Servlet的应用程序上下文路径,我试图了解在Node.js中定义上下文路径的最佳实践.
有问题的Node应用程序没有在代码中定义的上下文路径.例如,Express代码假定获取故事的请求具有路径为/ story/1的URL.因此,JavaScript UI代码会向http:// host:port/story/1发出请求.同样,对于用户连接到主应用程序页面,他们将转到http:// host:port /.
我想将用户看到的URL更改为http:// host:port/myapp.问题是如何将"myapp"一致地定义为应用程序上下文.我正在考虑的选项:
如何确保用户始终在URL中看到"myapp"?我是否还需要重新映射所有内部请求(由UI代码生成的请求)以具有'/ myapp'上下文?
使用Nginx看起来更干净,因为它不需要更改代码.但是这个目标可以通过Nginx配置单独实现,如果是这样,怎么样?
由于这是一个常见问题,因此必须有一个明确定义的模式来解决它.
在我的基于CXF的REST层中,我使用Jackson来对Groovy对象进行seializing /反序列化.我遇到的问题涉及反序列化没有setter方法的属性.有一个域对象Dashboard,getGroups()方法返回一个Group对象列表.序列化后,此对象已正确转换为具有"group"属性的JSON.当我从JavaScript发送更新对象时,JSON仍然具有"group"属性.由于该属性在域对象上是只读的,因此我希望在反序列化JSON时忽略"group"属性.
由于我使用Jackson混音,我尝试了@JsonIgnore,@ JsonGetter和@JsonProperty注释的各种组合 - 都无济于事.如果属性在序列化时可用,我在反序列化时会收到以下错误.我可以通过删除"group"属性来清理JavaScript中的JSON对象,我希望找到一个服务器端解决方案.
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Problem deserializing 'setterless' property 'groups': get method returned null (through reference chain: org.ozoneplatform.commons.server.domain.model.DashboardTemplate["groups"])
at com.fasterxml.jackson.databind.deser.impl.SetterlessProperty.deserializeAndSet(SetterlessProperty.java:114)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:198)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:577)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:393)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:289)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:1169)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:625)
at com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:448)
at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1038)
at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:614)
at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:578)
at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:238)
Run Code Online (Sandbox Code Playgroud)
如何告诉Jackson忽略反序列化的只读属性?
谢谢,
迈克尔
在我的 Spring Boot 应用程序中,我需要将位掩码存储到表列中,目的是对该列执行按位查询。
我有一个域类,其中包含一个 Long id 字段和一个包含位掩码的掩码字段。我无法弄清楚如何将它映射到包含自动生成的长“id”列和 BIT VARYING (100)“掩码”列的表。
我正在使用默认的 Hibernate 映射。当我在 Java 中将掩码定义为字符串时,出现“PSQLException:列“掩码”的类型位不同,但表达式的类型为字符不同”错误。
当我将掩码定义为 Java BitSet 时,PostgresSQL 仅针对 bytea Postgres 类型给了我一个类似的错误。
有没有办法将 Java 字段映射到 BIT VARYING 字段?可以使用默认持久性来完成吗?或者我是否必须覆盖 CRUD 方法才能在 BIT VARYING 和某些 Java 类型之间进行转换?
bitset ×1
cxf ×1
hibernate ×1
jackson ×1
java ×1
javascript ×1
nginx ×1
node.js ×1
path ×1
postgresql ×1
spring-data ×1
url ×1