Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 关于UI组件状态和阶段的几个问题_Jsf_Jsf 2 - Fatal编程技术网

Jsf 关于UI组件状态和阶段的几个问题

Jsf 关于UI组件状态和阶段的几个问题,jsf,jsf-2,Jsf,Jsf 2,通过这些出色的职位: 在JavaEE6教程的中途,我还有以下问题: 当我开发一个自定义UI组件时,其值(styleClass、value等)要么是静态定义的(在xhtml中),要么是通过bean设置的,我是否也需要在扩展组件中显式地保存/恢复状态 说UI组件的范围是视图范围是正确的吗 视图是如何识别行为的?(如果我离开某个视图,该视图将在下次重新生成。但是如果我打开另一个选项卡,它将被还原-至少是bean!) 当我执行Ajax调用时,我希望UI组件的“执行”部分将被恢复和处理,“呈现”部分将

通过这些出色的职位:

在JavaEE6教程的中途,我还有以下问题:

  • 当我开发一个自定义UI组件时,其值(styleClass、value等)要么是静态定义的(在xhtml中),要么是通过bean设置的,我是否也需要在扩展组件中显式地保存/恢复状态
  • 说UI组件的范围是视图范围是正确的吗
  • 视图是如何识别行为的?(如果我离开某个视图,该视图将在下次重新生成。但是如果我打开另一个选项卡,它将被还原-至少是bean!)
  • 当我执行Ajax调用时,我希望UI组件的“执行”部分将被恢复和处理,“呈现”部分将被恢复和更新。在UI:repeat遇到一些问题后,不清楚要将组件树恢复到哪个扩展,以及是否可以部分编辑。 例如(我不确定它是否是这样工作的):我定义了一个UI:repeat,它迭代一些值并创建一些Ajax命令链接。无论何时调用该命令,它都将恢复整个ui:repeat,而不考虑我定义的Ajax范围(execute/render)。因此,它将重新呈现整个ui:重复。此外,我不明白它如何能够——而不是——恢复ui:repeat,因为它是一个namingcontainer,它将编辑我新添加的组件的id
  • 如何定义构建时组件(相对于渲染时),以及为什么要这样做?(构建时组件与rendertime混合时似乎很麻烦,为什么两者都有呢)
  • 谢谢

    当我开发一个自定义UI组件时,其值(styleClass、value等)要么是静态定义的(在xhtml中),要么是通过bean设置的,我是否也需要在扩展组件中显式地保存/恢复状态

    对。你通常用这个

    另见:

    说UI组件的范围是视图范围是正确的吗

    绝对不是。UI组件实例在请求范围内。只有通过
    stateheloper
    存储的任何内容本质上是视图范围(并在“恢复视图”阶段恢复到新创建的组件实例中)

    另见:

    视图是如何识别行为的?(如果我离开某个视图,该视图将在下次重新生成。但是如果我打开另一个选项卡,它将被还原-至少是bean!)

    它可能是从浏览器缓存请求的。尝试在其中提交表单。您获得
    ViewExpiredException
    的可能性很大。您需要告诉浏览器不要缓存动态页面。在bean的构造函数上放置断点也会确认它从未被调用过

    另见:

    当我执行Ajax调用时,我希望UI组件的“执行”部分将被恢复和处理,“呈现”部分将被恢复和更新

    对于恢复零件,情况并非如此。将恢复“整个”视图状态。请注意,视图状态并不代表整个组件树,因为JSF2.0不一定代表整个组件树。您已经在问题中提到的两个链接中找到了对此的解释/答案


    如何定义构建时组件(相对于渲染时),以及为什么要这样做?(构建时组件与rendertime混合时似乎很麻烦,为什么两者都有呢)

    这称为“标记处理程序”。也就是说,仅从扩展而不是按照其合同执行。如果唯一的目标是构建视图(JSF组件树),那么标记处理程序非常有用。它们不会出现在JSF组件树中。至于何时创建自定义组件或自定义标记处理程序,请查看的“组件”和“标记处理程序”部分,它可能会为这些东西的实际用例提供一些新的见解

    另见:

    我理解一次问许多问题的个人便利性,但在未来,请每个问题问一个问题:)这使得更容易充实答案或指出重复的问题,并且本质上也让其他人搜索和找到特定的问题。我只是问了很多问题,因为我发现它们最终会得到一个更完整的答案,就像我引用的链接一样,非常有用。今后将坚持单一问题;)-谢谢