我有一个页面需要将数据传递到另一个页面。它们都使用相同的控制器,但第二页有自己的控制器扩展。当第一页向第二页传递数据时,第二页会调用控制器的构造函数。如果我从第二页中删除控制器扩展,则可以传递数据,并且仅在第一页上调用构造函数,而不是在第二页上。
如果两个页面使用相同的控制器,但一个页面使用控制器扩展,我如何将状态从一个页面传递到另一个页面?
比如下面的代码,如果我在 outputText 中为变量 t 输入数据,然后进入下一页,状态不会保存,构造函数会被调用,第 2 页的 t 的值为“构造”。如果 testExtension 从第二页中删除,那么一切正常。
顶点/测试1 VisualForce
<apex:page controller="test">
<apex:outputText value="{!t}" />
<apex:commandButton action="/test2" value="Go to test2" />
</apex:page>
控制器
class test {
public String t {get; set;}
public test() {
t = 'construct';
}
}
顶点/测试2 VisaulForce
<apex:page controller="test" extension="testExtension">
<apex:outputLabel value="{!t}" />
</apex:page>
控制器扩展:
class testExtension {
public testExtension(test controller) {
}
}