Java 是否可以使用对象作为JBoss EL解析器的EL中的函数参数?
有这样一句话: 充分理解EL的扩展是如何工作的,这一点很重要。呈现页面时,将存储参数名称(例如,hotel.id和user.username),并在提交页面时进行计算(作为值表达式)。不能将对象作为参数传递 但在我无意中读到这个提示之前,我已经在我的项目中使用了对象作为函数参数,它起了作用!怎么可能呢?我担心现在有一些魔法Java 是否可以使用对象作为JBoss EL解析器的EL中的函数参数?,java,jsf,jboss,facelets,el,Java,Jsf,Jboss,Facelets,El,有这样一句话: 充分理解EL的扩展是如何工作的,这一点很重要。呈现页面时,将存储参数名称(例如,hotel.id和user.username),并在提交页面时进行计算(作为值表达式)。不能将对象作为参数传递 但在我无意中读到这个提示之前,我已经在我的项目中使用了对象作为函数参数,它起了作用!怎么可能呢?我担心现在有一些魔法 编辑:请注意,我实际上使用了完全有价值的对象作为参数,而我们的框架堆栈(MyFaces、Facelets、Trinidad、Spring、Webflow)没有任何问题,我在问
编辑:请注意,我实际上使用了完全有价值的对象作为参数,而我们的框架堆栈(MyFaces、Facelets、Trinidad、Spring、Webflow)没有任何问题,我在问这是怎么可能的。例如,我可以在xhtml模板:“#{pageBean.formatAccount(account)}”中执行此操作,其中account是一个非常复杂的类。我知道,根据文件,这是不可能的,但事实确实如此。我是否应该害怕未来的困难?这就是问题所在。这在Seam框架中是允许的。单独使用JSF是不允许的。这是使用Seam的优点之一。您可以将对象作为参数传递。这在Seam framework中是允许的。单独使用JSF是不允许的。这是使用Seam的优点之一。您可以将对象作为参数传递。这里的意思是“非标准”对象。也就是说,不是
字符串
,整数
等,而是像Javabeans等具有完整价值的对象
更新:我现在明白了文档的含义。这意味着这些值实际上不是作为复杂对象传递的,而是作为表示值表达式的普通字符串传递的。字面上看,
“bean.hotel”
,“bean.user.address”
,等等。当提交页面时,这些字符串将作为值表达式进行计算,并将从JSF内存中检索与其关联的复杂对象
这里的重要性在于,您需要在表单提交的后续请求中保留与表单初始显示相同的复杂对象。如果bean是请求范围的,那么当响应完成时,原始对象将丢失。您希望在后续请求期间在bean的构造函数中再次构造完全相同的复杂对象。解决这个“问题”的另一种方法是将bean放在更广泛的范围内,如会话范围、Seam会话范围或JSF 2.0视图范围
这也是文档的下一句话试图说明的内容:
您必须确保参数不仅在呈现页面时可用,而且在提交页面时也可用。如果在提交页面时无法解析参数,则将使用null参数调用操作方法
这里的意思是“非标准”对象。也就是说,不是字符串
,整数
等,而是像Javabeans等具有完整价值的对象
更新:我现在明白了文档的含义。这意味着这些值实际上不是作为复杂对象传递的,而是作为表示值表达式的普通字符串传递的。字面上看,
“bean.hotel”
,“bean.user.address”
,等等。当提交页面时,这些字符串将作为值表达式进行计算,并将从JSF内存中检索与其关联的复杂对象
这里的重要性在于,您需要在表单提交的后续请求中保留与表单初始显示相同的复杂对象。如果bean是请求范围的,那么当响应完成时,原始对象将丢失。您希望在后续请求期间在bean的构造函数中再次构造完全相同的复杂对象。解决这个“问题”的另一种方法是将bean放在更广泛的范围内,如会话范围、Seam会话范围或JSF 2.0视图范围
这也是文档的下一句话试图说明的内容:
您必须确保参数不仅在呈现页面时可用,而且在提交页面时也可用。如果在提交页面时无法解析参数,则将使用null参数调用操作方法
我没有说“I”,我说的是“It”,指的是JBoss文档。对不起,我忽略了“t”:。但我编辑了我的问题,以明确我已经在使用fullworthy对象,我在问这是怎么可能的。我没有说“我”,我说的是“它”,指的是JBoss文档。对不起,我忽略了“t”:。但我对我的问题进行了编辑,以明确我已经在使用fullworthy对象,我在问这是怎么可能的。