在ViewScoped之间传递参数

时间:2015-10-19 04:18:52

标签: jsf parameter-passing view-scope

我有两个托管bean类型l match { case a :: b :: Nil => Some(a + b) case _ => None } 。 bean列出了用户的项目。另一个显示项目的扩展信息。我正在通过url传递项目的id,这是它与viewscoped bean一起工​​作的唯一方式。

但我不喜欢这种方式,因为用户可以尝试更改值url并查看其他用户的项目。我想知道用户是否看不到任何在页面之间传递参数的方法,并避免额外的安全检查。

1 个答案:

答案 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

但毕竟以我的拙见,做额外的安全检查。因为您在更新数据时不会遇到任何问题,尤其是在许多地方使用它们时,您的网址设计会更好。