我想添加两个在vf页面文本框中给出的数字。我想通过单击第一页中的按钮(添加按钮)将结果打印到另一个vf页面。
请帮助我这样做....
谢谢,
答案 0 :(得分:0)
您可以通过路由到Visualforce中的下一页并将要显示的值作为参数传递来执行此操作。在Apex中这样的东西应该有效:
PageReference gotoPage()
{
PageReference pr = Page.YourSecondVFPage;
pr.getParameters().put('secondnumber', '' + this.secondNumber);
pr.setRedirect(true);
return pr;
}
然后在Visualforce中:
<apex:commandButton value="Go!" action="{!gotoPage}"/>
答案 1 :(得分:0)
我想您可能想尝试在两个页面上使用相同的控制器。这样你就不必传递所有数据,假设你不仅仅需要维护几个字段,作为url参数,或者如果你不需要那么必须将数据存储在某个地方。
如果两个页面都使用相同的控制器,并且当您使用PageReference重定向用户时,请确保将重定向值设置为 false ,否则Salesforce会将其视为新请求并使用控制器的新实例。
下面的示例代码允许用户在字段中键入一些文本,然后在单击打印视图时,使用相同的信息呈现PDF。没有数据保存到数据库。
控制器
public with sharing class MyController {
public string MyData {get;set;}
public MyController() {
MyData = '';
}
public PageReference printView() {
PageReference oPageRef = Page.MyPage2;
oPageRef.setRedirect(false);
return oPageRef;
}
}
第1页:
<apex:page controller="MyController">
<apex:sectionheader title="Test" subtitle="My Page"/>
<apex:form id="formData">
<apex:pageBlock title="My Data">
<apex:pageBlockButtons >
<apex:commandButton value="Printable View" action="{!printView}" />
</apex:pageBlockButtons>
<apex:pageBlockSection >
<apex:pageBlockSectionItem >
<apex:outputLabel value="My Data"/>
<apex:inputTextArea value="{!MyData}" />
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
第2页:
<apex:page controller="MyController"
renderAs="pdf">
{!MyData}
</apex:page>