我有两个托管bean类型l match {
case a :: b :: Nil => Some(a + b)
case _ => None
}
。
bean列出了用户的项目。另一个显示项目的扩展信息。我正在通过url传递项目的id,这是它与viewscoped bean一起工作的唯一方式。
但我不喜欢这种方式,因为用户可以尝试更改值url并查看其他用户的项目。我想知道用户是否看不到任何在页面之间传递参数的方法,并避免额外的安全检查。
答案 0 :(得分:0)
如果建议的闪存范围不可用,则在没有额外安全检查的情况下执行此操作的另一种方法是使用Mapper.CreateMap<ClassA, MyViewModel>();
Mapper.CreateMap<ClassB, MyViewModel>()
.ForMember(dest => dest.Id, opt => opt.Ignore());
var vm = Mapper.Map<MyViewModel>(classA);
Mapper.Map<ClassB, MyViewModel>(classA.Item, vm);
带注释的bean。但是请确保会话范围bean只包含必要的数据,否则会遇到其他麻烦。
例如:
Mapper.CreateMap<ClassA, MyViewModel>()
.ForMember(dest => dest.Property(n+1), opt => opt.MapFrom(source => Item.Property(n+1)))
.ForMember(...); //for each of ClassB property
var vm = Mapper.Map<MyViewModel>(classA);
和
@SessionScoped
但毕竟以我的拙见,做额外的安全检查。因为您在更新数据时不会遇到任何问题,尤其是在许多地方使用它们时,您的网址设计会更好。