小编Joh*_*n O的帖子

HTML5输入类型的范围和颜色不能为空.如果它们镜像的数据库列为空,该怎么办?

相对较新的HTML表单控件包括'type = range'和'type = color'控件.该规范指出,当提交包含此类控件的表单时,将始终为这些控件提交值.他们永远不会是空的.

这与type = text控件和其他类似控件不同,其值实际上可以是空字符串.

似乎不可能使用范围和颜色控件来反映数据库中可为空的列的状态.

这有什么解决方法吗?

编辑:此链接在此处指定行为:HTML5规范

forms html5 input colors range

7
推荐指数
1
解决办法
1094
查看次数

Servlet响应包装器有编码问题

Servlet响应包装器正在Servlet过滤器中使用.这个想法是响应被操纵,并将"nonce"值注入表单中,作为防御CSRF攻击的一部分.

Web应用程序在任何地方都使用UTF-8.当Servlet过滤器不存在时,没有问题.添加过滤器时,会出现编码问题.(似乎响应回复到8859-1.)

代码的内容:

final class CsrfResponseWrapper extends AbstractResponseWrapper {
   ...
   byte[] modifyResponse(byte[] aInputResponse){
      ...
      String originalInput = new String(aInputResponse, encoding);
      String modifiedResult = addHiddenParamToPostedForms(originalInput);
      result = modifiedResult.getBytes(encoding);
      ...
   }
   ...
}
Run Code Online (Sandbox Code Playgroud)

据我了解,byte-land和String-land之间的转换应指定编码.正如你所看到的,这在两个地方就完成了.'encoding'变量的值是'UTF-8'; String本身的更改是标准字符串操作(使用正则表达式),并且从不指定编码(addHiddenParamToPostedForms).

关于编码我在哪里错误?

编辑:这是基类(对不起,它很长):

package hirondelle.web4j.security;

import javax.servlet.ServletOutputStream;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintWriter;

/**
 Abstract Base Class for altering response content.
 (May be useful in future contexts as well. For now, keep package-private.)  
*/
abstract class AbstractResponseWrapper extends HttpServletResponseWrapper {

  AbstractResponseWrapper(ServletResponse aServletResponse) …
Run Code Online (Sandbox Code Playgroud)

java servlets character-encoding wrapper servlet-filters

2
推荐指数
1
解决办法
3846
查看次数

内存泄漏总是需要一个长期存在的对象?

这个陈述是真实的,错误的还是制定不当的:

"在Java中,内存泄漏必须始终以某种方式与长期存在的对象相关联."

在这种情况下,我只是指常规对象,而不是一般的系统资源(文件描述符等).

长寿命对象的一个​​示例可能是单例(通常以任何速率实现),只要应用程序正在运行,它就会存在.

java memory-leaks

1
推荐指数
1
解决办法
1062
查看次数