ログイン情報を含むカスタム HTTP ヘッダーを play アプリケーション (play 1.2.5) に送信する必要があります。そのカスタム ヘッダーはフィルターによって追加されます。
問題は、読み込もうとすると、常にプレイが NullPointerException をスローすることです。
String loggedUser = request.headers.get("loggeduser").value();
テスト用のサーブレットもあります。以下は、ヘッダーから正しく値を出力します。
out.println(request.getHeader("loggeduser"));
私は遊びに何か欠けていますか?
ありがとう
編集:これは私のフィルターです
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
CustomHeaderWrapper wrapper = new CustomHeaderWrapper((HttpServletRequest) request);
String username = ((HttpServletRequest) request).getRemoteUser();
wrapper.addHeader("loggeduser", username);
chain.doFilter(wrapper, response);
}
そしてCustomHeaderWrapper :
private Map<String, String> customHeaderMap = null;
public CustomHeaderWrapper(HttpServletRequest request) {
super(request);
customHeaderMap = new HashMap<String, String>();
}
@Override
public String getHeader(String name) {
String header = super.getHeader(name);
return (header != null) ? header : this.getParameter(name);
}
@Override
public Enumeration getHeaderNames() {
List<String> names = Collections.list(super.getHeaderNames());
names.addAll(Collections.list(super.getParameterNames()));
return Collections.enumeration(names);
}
@Override
public String getParameter(String name) {
String paramValue = super.getParameter(name); // query Strings
if (paramValue == null) {
paramValue = customHeaderMap.get(name);
}
return paramValue;
}
public void addHeader(String headerName, String headerValue) {
customHeaderMap.put(headerName, headerValue);
}