Struts中form的对象数组

本文探讨了在Struts框架中如何实现复杂对象数组的注入,并解决了在实际开发过程中遇到的问题,包括对象命名规范、属性大小写敏感及nullpointer异常等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有以下的一个form类,它有3个属性,2个是javaBean,还有一个是javaBean的数组

 

  1. public class PrmMainType extends ActionForm{
  2.     private PlyCalVhlType plyCalVhlType;
  3.     private PlyRdrType[] plyRdrType;
  4.     private PlyFrcVhlType plyFrcVhlType;
  5.     public PlyCalVhlType getPlyCalVhlType() {
  6.         return plyCalVhlType;
  7.     }
  8.     public void setPlyCalVhlType(PlyCalVhlType plyCalVhlType) {
  9.         this.plyCalVhlType = plyCalVhlType;
  10.     }
  11.     public PlyRdrType[] getPlyRdrType() {
  12.         return plyRdrType;
  13.     }
  14.     public void setPlyRdrType(PlyRdrType[] plyRdrType) {
  15.         this.plyRdrType = plyRdrType;
  16.     }
  17.     public PlyFrcVhlType getPlyFrcVhlType() {
  18.         return plyFrcVhlType;
  19.     }
  20.     public void setPlyFrcVhlType(PlyFrcVhlType plyFrcVhlType) {
  21.         this.plyFrcVhlType = plyFrcVhlType;
  22.     } 
  23. }

现在有一个需求就是要把页面的值注入到form中去,在开发的过程中遇到了很多意想不到的事:

首先没有使用过复杂对象数组注值,原来都是使用String数组,只要在页面使用相同的名字在后台就会获得String数组。而对于上面的这种情况则需要使用plyRdrType[0].SNclmDesc这种形式了

 

  1. <input type="checkbox" name="plyRdrType[0].SNclmDesc" value="Y">

这个地方碰到了2个问题plyRdrType对象的类型原本不是这样定义的是非规范定义:

  1. private _plyRdrType[] plyRdrType;

这在Struts中好像是不允许的:你必需按照骆驼峰的方式进行规范命名,否则你将自食其果。

不知道你们注意到上面的input中SNclmDesc的第一个字母是大写的没,其实在vo中是sNclmDesc。用小写的时候你会发现下面的异常(用nested标签的时候)或者你会发现其它的都取到值了而这个属性没有:

  1. PrmMainType has no property defined by "plyRdrType[0].sNclmDesc"

如果你还有以d打头命名的属性时也会遇到上面的问题,改成大写的就可以了。

 

 

以上的是页面方面遇到的问题,这个时候提交的话是不会出现你所期望的结果的,它会无情的给你抛出一个nullpoint exception,

为什么?没有进行初始化。为什么?我也不清楚。。。。

只要在PrmMainType中加入下面的代码就可以了:

 

  1.     public void reset(ActionMapping mapping, HttpServletRequest request) {
  2.         String plyRdrTypeLs=request.getParameter("plyRdrTypeLength");
  3.         int plyRdrTypeLength=(new Integer(plyRdrTypeLs)).intValue();
  4.         plyRdrType=new PlyRdrType[plyRdrTypeLength];
  5.         plyCalVhlType=new PlyCalVhlType();
  6.         for(int i=0;i<plyRdrTypeLength;i++){
  7.             plyRdrType[i]=new PlyRdrType();
  8.         }
  9.         plyFrcVhlType=new PlyFrcVhlType();
  10.     }

plyRdrTypeLength是页面中的一个hidden属性,用来定义plyRdrType的长度,由js来控制。

 

贴一段页面代码

 

  1. <form name="prmMainType" method="post" action="<%=request.getContextPath() %>/formArrayAction.do?cmd=getData">
  2.               <input type="hidden" name="plyRdrType[0].FRdrAmt" value="50000">
  3.               <input type="hidden" name="plyRdrType[0].FRdrAmtDes" value="50000">
  4.              <input type="submit" value="提交">
  5.     <input type="hidden" name="plyRdrTypeLength" value="2">
  6. </form>

 

这样基本上就可以了,下面介绍下nested标签。这是一个并不常用的标签,它的一个优点就是可以在页面展示很好的业务逻辑,它允许你按照form中的那种层级关系在页面中进行布局:

  1. <html:form action="/formArrayAction.do?cmd=getData">
  2.               <nested:nest property="plyRdrType[0]">
  3.               <nested:checkbox property="SNclmDesc" value="Y"></nested:checkbox>
  4.               <nested:hidden property="SNclmDescDes" value="Y"></nested:hidden>
  5.               </nested:nest>
  6.         <html:submit>提交</html:submit>
  7. </html:form>

nested标签也可以完成上面的功能,不过有些地方有点麻烦,大家自己去体会吧。

 

最后说一句,Struts之类的框架是为了给大家提供方便的,不能为了使用而使用,当你觉得使用它增加了复杂度的时候可以考虑下其他的方式。

内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值