是否有任何优雅的方法来覆盖web.xml配置并从java类向cors.allowOrigin添加内容。我的allowOrigin需要由非硬编码的代码生成。
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>ORIGINS</param-value>
</init-param>
...
</filter>
当然我可以覆盖CORSFilter,但我有
@Override
public void init(final FilterConfig filterConfig)
throws ServletException {}
其中FilterConfig是一个只读接口,对Enumerations也是只读的...通常以这种方式解决问题迫使我写出许多额外的奇怪代码。有没有最短的解决方案?
答案 0 :(得分:0)
我认为这是容器的一部分,只能通过设计阅读。要超宽,您需要制作卷影副本,并参考只读的默认值/需要更改的内容。
对于另一个项目,我们需要在servlet中添加params,所以我们这样做了
package com.sel2in.req
import java.util.HashMap; import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class WrapedRequest extends HttpServletRequestWrapper {
private Map<String, String> myP = new HashMap<String, String>();
private HttpServletRequest req;
public WrapedRequest(HttpServletRequest request) {
super(request);
req = request;
}
public void setParameter(String s, String v) {
myP.put(s, v);
}
public java.lang.String getParameter(java.lang.String name) {
String s = myP.get(name);
if (s != null)
return s;
return req.getParameter(name);
}
//over ride more if needed
}
并使用它
wrpReq = new WrapedRequest(req);
wrpReq.setParameter("userid", username);
同样,您需要使用FilterConfig
执行此操作