用自定义getter在EL表达式中检测HibernateEntityBean中的ObjectNotFound数据丢失异常
在Hibernate中,Restaurant对象建立many-to-one关联到Street对象,当Street数据被删除时,可以用双向关联设置级联将Restaurant.street设置为null。
如果不是双向关联,则不能设置为null,删除Street时如无做动作,Restaurant表的streetDataId字段不为null,但Street表已没对应数据。
而Restaurant.getStreet()不为null,Restaurant.getStreet().getDataId()仍可操作(只是用Restaurant表的streetDataId字段,不会进行数据库操作),
但Restaurant.getStreet().getStreetName()会出现ObjectNotFound异常,
在.java中可捕捉任何异常进行处理,但当PO不经过转换成VO就传递至jsp时,jsp的EL表达式${restaurant.street.streetName}只能处理null异常,
不能处理ObjectNotFound异常,以致用户见到一堆乱码无法进行任何挽救的操作。如果没特殊处理,EL表达式不能作这样的检测。
有些人会在Restaurant.street的getter里写检测代码或者作更多的处理,比如会new一个非null的Street返回:
public Street getStreet()
{
try
{
if(street==null)
street=new Street();
else
street.getStreetName();//检测Street数据是否能访问。
}
catch(Exception ex)
{
street=new Street();
}
return street;
}
但这种做法是错误的,因为会改变数据库字段getter/setter的通常用法,不可预料和控制。
这时,不妨可以写个另外不和数据库字段关联的不同名字的getter,既不会让代码混乱,又可在需要检测时方便使用:
public boolean getStreetAvailable()
{
boolean available=true;
try
{
street.getArea().getCity();//检测关联的数据是否能访问。
}
catch(Exception ex)
{
available=false;
}
return available;
}
灵活利用getter,让您的程序更健壮。
分享到:
相关推荐
EL表达式(Expression Language),是一种用于Java Web开发中方便数据存取的表达式语言,最初作为JSP标准标签库(JSTL)的一部分,是JSTL 1.0为了方便存取数据而自定义的语言。EL允许开发者在JSP页面中通过简洁的...
EL(Expression Language,表达式语言)是Java EE中一种强大的模板语言,主要用于在JSP页面中简化数据访问和处理。它允许开发者通过简洁的语法来访问JavaBeans中的属性,执行基本算术运算,以及调用方法。EL表达式与...
而在JSP页面中,EL(Expression Language)表达式以及JSTL(JavaServer Pages Standard Tag Library)的使用则大大简化了页面数据绑定和逻辑处理的工作量。本文将重点介绍JSTL_EL表达式的概念、特点及其应用场景。 ...
本文将深入探讨如何在 Dubbo 中捕获自定义异常,以及相关的最佳实践。 1. **自定义异常类** 在 Java 中,自定义异常通常继承自 `Exception` 或其子类。例如,你可以创建一个名为 `CustomServiceException` 的异常...
在EL表达式中,实际上底层是使用了OGNL(Object-Graph Navigation Language)来处理对象导航和表达式的求值。OGNL是一种强大的表达式语言,可以用来获取或设置Java对象的属性,包括深层的对象属性和集合元素。例如,...
利用这些隐含对象,可以非常方便地在EL表达式中访问作用域中的数据,而无需使用表达式主体的前缀,这大大简化了代码。 通过深入理解EL表达式在JSP中的应用,开发者可以更加高效地进行Web页面的开发工作,使得数据的...
EL(Expression Language)表达式是JavaServer Pages(JSP)技术中的一个重要组成部分,它提供了一种简洁的方式来访问和操作页面、请求、会话和应用程序范围内的数据。EL主要用于简化JSP页面中的Java代码,使页面...
总结来说,EL表达式是JSP开发中一种强大的工具,它允许开发者用更简洁的方式处理数据,提高了代码的可读性和可维护性。通过掌握EL表达式,可以更高效地构建动态JSP页面,减少不必要的Java脚本代码,使页面更加专注于...
EL(Expression Language)表达式语言是Java服务器页面(JSP)技术中的一种强大的表达式语法,主要用于在JSP页面中方便地访问和显示数据。它提供了简洁的语法来访问JavaBeans或其他域对象中的属性和方法。EL表达式...
### EL表达式的使用详解 #### 一、EL (Expression Language) 概述 EL,即表达式语言(Expression Language),是一种简单而强大的语法,用于获取存储在JSP页面、Servlet以及应用范围内的对象属性。它主要应用于JSP...
在JSP开发中,EL(Expression Language)表达式是一种强大的工具,用于简化页面中的数据访问。然而,有时候可能会遇到EL表达式被当作普通字符串处理,而不是执行预期的计算或访问对象属性的操作。这种情况通常与JSP...
在实际的Java开发项目中,自定义异常是提高代码可读性和可维护性的重要手段。异常处理是程序设计的关键部分,它有助于捕获并处理在程序执行过程中可能出现的错误或异常情况。Java提供了丰富的异常处理机制,包括预...
【JSP详解含JavaBean和EL表达式】 JavaServer Pages(JSP)是Java平台上的一个标准技术,用于创建动态Web页面。它允许开发者将HTML和Java代码混合编写,简化了网页开发流程。JSP的核心在于它能将业务逻辑、表示层和...
Cron表达式是Unix/Linux系统中的定时任务调度器Cron所使用的语法,也被广泛应用于Java世界,例如Quartz、Spring等框架。它允许用户以字符串的形式定义任务的执行时间,如分钟、小时、日期等。这个压缩包文件包含了对...
在Java世界中,EL(Expression Language)是一种强大的脚本语言,用于在JSP视图层进行数据绑定和表达式计算。EL语言简化了从请求作用域、会话作用域、应用作用域等获取数据的过程。然而,使用EL时可能会遇到`...
EL(Expression Language)是Java EE中的一个核心组件,主要用于在JSP、JSF等Web应用程序中简化数据访问和表达式处理。它允许开发者通过简洁的语法来访问和操作Java对象的属性,而无需编写大量的Java脚本或者JSP标签...
在实际项目开发中,有时我们可能需要对数据库中的某些字段使用自定义的数据类型,以更好地符合业务需求。本篇文章将深入探讨如何在Hibernate中实现自定义数据类型。 首先,我们需要理解Hibernate是如何处理数据类型...
在C#编程中,我们经常需要为类的属性创建getter和setter方法,以便于访问和修改数据。然而,手动编写这些方法对于大量属性的类来说非常耗时。为了解决这个问题,开发者可以利用正则表达式(Regular Expression)来...
在iOS开发中,getter和setter方法是Objective-C和Swift中对象属性访问的重要组成部分。它们用于获取(get)和设置(set)对象的属性值。本文将深入探讨getter和setter的概念、作用以及如何在代码中使用它们。 首先...