+ Start a Discussion
Justin MitchellJustin Mitchell 

Need help passing multi-line textarea value from one visualforce page to an embedded visualforce page

I have two visualforce pages.
Page #1 has an editable apex:inputTextArea field on it, on the left side.
Page #2 is rendered as a pdf, and it is embedded into page #1 on the right side. Displayed in page #2 there is a Visualfore component. The component needs to include the text from the inputTextArea on page #1.
There is a button on page #1 (Generate Preview) that should update page #2 with any changes made in the text area.

How can I do this?

Here's what I've tried:
-Passing the text area as a variable in the url does not work, as page breaks in the are not maintained
-I am able to get the desired result by creating a PageReference method in the controller, then having the button action use that method, but that redirects me to page #2 when I click the button, as opposed to letting me reload it as an iframe inside page #1

Here's my super simplified code:

Page #1:
<apex:page showHeader="true" sidebar="true" controller="pdfTest_Class" applyBodyTag="false" tabstyle="opportunity" title="PDF Test">
	<apex:form >
		<apex:pageblock >
			<apex:pageBlockButtons location="top" >
				<apex:commandButton value="Generate Preview" reRender="preview" />

			<apex:outputPanel layout="block">
				<div style="width:50%; float:left;">
					<apex:pageblock mode="edit">
						<apex:pageblocksection columns="1" >	 
			                <apex:pageBlockSectionItem >
			                     <apex:outputlabel value="Company Name" /> 
			                    <apex:inputText value="{!companyName}" />

			                <apex:pageBlockSectionItem >
			                     <apex:outputlabel value="Description"  /> 
			                    <apex:inputTextarea value="{!description}" cols="30" rows="5"  />
                <div style="width:50%; float:right;" >
                	<apex:pageBlock id="preview">
                		<apex:pageBlockSection columns="1">
                			<apex:iframe src="pdfTest_PreviewPage?companyName={!URLENCODE(companyName)}&description={!URLENCODE(description)}" height="300"/>
public with sharing class pdfTest_Class {
	public String companyName {get; set;}
	public String description {get; set;}

    public pdfTest_Class() {
    	companyName = '<enter company name>';
    	description = '<enter description>'

Page #2:
<apex:page showHeader="false" sidebar="false" applyBodyTag="false" renderAs="pdf">

<apex:component >
	<apex:attribute name="companyName" description="Company Name" type="String" />
	<apex:attribute name="description" description="Description" type="String" />

	The name of the company is {!companyName}
	<br />
    <br />

There's GOT to be a better way to do this but this is the only way I know how, and now that I need text area fields, it doesn't even work. Help!