Jsf 避免在h:inputText中显示默认长值0
我有一个Jsf 避免在h:inputText中显示默认长值0,jsf,jsf-1.2,Jsf,Jsf 1.2,我有一个,它接受这样一个long值 <h:inputText value="#{ServiceTable.ID}" /> public class ServiceTable { private long ID; // Getter and setter for ID. } 当我打开页面时,我总是在文本框中看到0。我怎样才能避免呢?我只需要一个空的文本框。我正在使用JSF1.2。使用Long而不是Long。它默认为null private Long ID; 而
,它接受这样一个long
值
<h:inputText value="#{ServiceTable.ID}" />
public class ServiceTable {
private long ID;
// Getter and setter for ID.
}
当我打开页面时,我总是在文本框中看到
0
。我怎样才能避免呢?我只需要一个空的文本框。我正在使用JSF1.2。使用Long
而不是Long
。它默认为null
private Long ID;
而且,如果您正在运行Tomcat 6.0.16或更高版本或其分支,则需要将以下VM参数添加到服务器启动参数中,并禁用原语及其包装器的EL强制:
-Dorg.apache.el.parser.COERCE_TO_ZERO=false
糟透了!许多开发人员无法访问实际的服务器,有时您无法找到客户机并告诉他:“停止您的服务器并使用此启动选项重新启动一切” 为什么apache团队中的人从来没有想过这一点
如果您和我一样处于这种情况,另一种解决方案是将字段作为字符串,并在支持bean中手动解析。感谢BalusC的回复。我定期阅读您的博客。它提供了大量信息,对新手非常有用。你能解释一下区别吗?
long
是一个原语,当声明为类/实例变量时,它的默认值为0
Long
是一个包装器对象,其默认值为null
。这只是基本的Java。另请参见关于基本类型的Java教程:感谢BalusC的帮助。它成功了。您能告诉我在哪里添加上述命令吗?作为启动VM参数或作为Java\u OPTS
环境变量。但如果成功了,那么你就不必再添加那个论点了。我还有一个小的澄清。今天我问了这个问题,你回答说它很好。但是即使在提交后复选框仍然处于选中状态。如何避免这种情况?