Session Tapestry:会话状态对象何时应优先于会话属性?

Session Tapestry:会话状态对象何时应优先于会话属性?,session,session-variables,session-state,tapestry,Session,Session Variables,Session State,Tapestry,从中我似乎了解到,用@SessionAttribute注释的字段和用@SessionState注释的字段的工作方式相同,只是@SessionAttribute按名称存储值(并且可以指定名称),这意味着可以存储同一类的不同实例,虽然@SessionState按类型存储值,因此存储同一类的不同实例将不起作用,但新实例将始终覆盖旧实例(即使这两个实例是名称不同、来自不同类的不同字段) 因此,@SessionState似乎没有比@SessionAttribute提供任何优势,只是有一些限制,但我可能遗漏

从中我似乎了解到,用
@SessionAttribute
注释的字段和用
@SessionState
注释的字段的工作方式相同,只是
@SessionAttribute
按名称存储值(并且可以指定名称),这意味着可以存储同一类的不同实例,虽然
@SessionState
按类型存储值,因此存储同一类的不同实例将不起作用,但新实例将始终覆盖旧实例(即使这两个实例是名称不同、来自不同类的不同字段)

因此,
@SessionState
似乎没有比
@SessionAttribute
提供任何优势,只是有一些限制,但我可能遗漏了一些东西。无论出于何种原因,我都不知道使用
@SessionState
@SessionAttribute
更可取


是否存在这种情况?

@SessionAttribute主要用于一些互操作情况,其中一些其他非Tapestry代码(另一个servlet)希望使用显式指定的名称存储数据


@SessionState的优点是名称是根据类型自动确定的。。。少关心一件事,更易于重构。

谢谢,这回答了我的问题。
@SessionAttribute
主要用于某些互操作案例,这是否意味着在标准的非互操作案例中使用它而不是
@SessionState
可能存在缺点(除了需要注意设置名称之外)?比如性能、内存使用或其他?我被要求说明
@SessionState
相对于
@SessionAttribute
的具体优势,但我没有提到任何优势,另外,我无法反驳这样的反对意见,即根据使用上下文,从类型自动确定名称既是一种优势,也是一种限制,因为假定的优势也是无法存储多个实例的原因。事实上,至少现在我不得不同意这种反对意见。