Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java项目的实体中实现特定于区域的字段_Java_Spring_Aop_Aspectj - Fatal编程技术网

在Java项目的实体中实现特定于区域的字段

在Java项目的实体中实现特定于区域的字段,java,spring,aop,aspectj,Java,Spring,Aop,Aspectj,在我的项目中,需要在需要的实体中添加特定于区域的字段。当项目在特定区域运行时,这些字段将可见。我想这可以通过使用pom.xml中的概要文件或使用web.xml来实现 例如: 员工有姓名、工资、年龄。还有一个额外的字段“regionalAge”,它将根据Hijri日历保存年龄 考虑到我们在jsp上手动输入这些详细信息,我只想在需要时显示特定于区域的字段 我想通过使用面向方面编程来实现这一点。当前的实现对开发人员不是很友好。有什么建议吗 另外,我对AOP是新手,希望通过这个例子学习同样的东西 Q)

在我的项目中,需要在需要的实体中添加特定于区域的字段。当项目在特定区域运行时,这些字段将可见。我想这可以通过使用
pom.xml
中的概要文件或使用
web.xml
来实现

例如:

员工有姓名、工资、年龄。还有一个额外的字段“
regionalAge
”,它将根据
Hijri日历保存年龄

考虑到我们在
jsp
上手动输入这些详细信息,我只想在需要时显示特定于区域的字段

我想通过使用
面向方面编程来实现这一点。当前的实现对开发人员不是很友好。有什么建议吗

另外,我对AOP是新手,希望通过这个例子学习同样的东西

Q) 目前是如何实施的

A) 创建了一个新实体,例如:RegionalData。该实体具有有限数量的字段,这些字段的编号类似于regionalField1、2等。该实体需要嵌入到任何需要其内部区域特定字段的实体中。坚持同样的原则已经得到了处理

有一个xml文件,比如:regionalSpecificMapping.xml,其中映射了我希望在其中使用它的“jspName”和“源实体名称”。 还有一个区域映射表,它执行相同的操作,并将字段名称映射到源实体名称和区域字段编号#1/2/3

这将导致在嵌入区域数据的实体表中创建数量有限的列。在这些列中,存储特定于区域的值

我正在寻找另一种方法,因为当前的方法在某个时候无法包含更多字段,并且必须再次包含更多字段。

第一种也是最简单的方法是让类中的所有区域字段都可以为空。例如,
Employee
类将具有“regionalAge”,但只有当它与当前区域相关时,才会初始化它。在表示层(jsp)中,应该只显示非空的字段

作为此解决方案的一个变体,您可以使用来自Java8(如果您使用Java8)或guava(如果您仍然使用以前的版本)的
可选

第二种解决方案是使用base
Employee
类并将其扩展到特定区域<代码>员工
已实施并打包到您的核心项目中。但是您可以实现几个扩展,这些扩展提供了自己的类,这些类扩展了
Employee
,并添加了它们的字段。您还可以定义创建实体的工厂,并在每个子项目中重新定义此工厂,以便可以使用通用方法完成实体的实例化

第一种也是最简单的方法是让类中的所有区域字段都可以为空。例如,
Employee
类将具有“regionalAge”,但只有当它与当前区域相关时,才会初始化它。在表示层(jsp)中,应该只显示非空的字段

作为此解决方案的一个变体,您可以使用来自Java8(如果您使用Java8)或guava(如果您仍然使用以前的版本)的
可选


第二种解决方案是使用base
Employee
类并将其扩展到特定区域<代码>员工
已实施并打包到您的核心项目中。但是您可以实现几个扩展,这些扩展提供了自己的类,这些类扩展了
Employee
,并添加了它们的字段。您还可以定义创建实体的工厂,并在每个子项目中重新定义此工厂,以便可以使用通用方法完成实体的实例化

一,。在第一种方法中,您说过不应显示“commandName”的任何空字段。我将如何接受该字段的值,因为在开始时,其值将为null。我没有使用可选的,因为我的项目在Java8上。2.我认为第二种方法会破坏结构的通用性,因为整个项目已经设计好了。第一种方法很简单,确实有它的缺点。如果您使用番石榴,则可以将可选选项与Java7一起使用。第二种方法不会破坏任何项目。它只需要从核心项目中定义可扩展实体工厂的机制。如果我错了,请纠正我:我需要创建一个工厂类,为我提供Employee或EmployeeRegional(它扩展Employee并具有其他特定于区域的字段)的对象。这个对象一旦收到,现在就可以作为命令名传递给表示层中的“jsp”。在“jsp”中,我也需要根据某些条件显示用于输入区域数据的字段。我说得对吗。在第一种方法中,您说过不应显示“commandName”的任何空字段。我将如何接受该字段的值,因为在开始时,其值将为null。我没有使用可选的,因为我的项目在Java8上。2.我认为第二种方法会破坏结构的通用性,因为整个项目已经设计好了。第一种方法很简单,确实有它的缺点。如果您使用番石榴,则可以将可选选项与Java7一起使用。第二种方法不会破坏任何项目。它只需要从核心项目中定义可扩展实体工厂的机制。如果我错了,请纠正我:我需要创建一个工厂类,为我提供Employee或EmployeeRegional(它扩展Employee并具有其他特定于区域的字段)的对象。这个对象一旦收到,现在就可以作为命令名传递给表示层中的“jsp”。在“jsp”中,我也需要根据某些条件显示用于输入区域数据的字段。我说得对吗?