• AYK
  • NEWBIE
  • 0 Points
  • Member since 2018

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 2
    Questions
  • 1
    Replies
Hi All,

I would like to output the detail page item to XML file by pressing a custom button.

​If there are no input items,
I want to display a page or error message urging input without XML file output,
but is it possible to execute it?

<VF>
<apex:page cache="false" standardController=“Test__c” extensions="TestController" contentType="text/xml;charset=UTF-8#test.xml" showHeader="false" >
	<apex:outputText escape="true" value="{!xml}" />
</apex:page>
<Controller>
public class TestController {

	public TestController(ApexPages.StandardController controller) {
	}

	public String getXml() {
		
		XmlStreamWriter w = new XmlStreamWriter();
		Id paramId = ApexPages.currentPage().getParameters().get('id');

		w.writeStartDocument('UTF-8', '1.0');
		w.writeCharacters(‘\n’);

		//start meta  
		w.writeStartElement(null, ‘meta’, null);
		w.writeCharacters('\n	');

		String soql = 'Select ' + getAllFieldNames(‘XXX__c’) + 
			          ' From XXX__c’ + 
			          ' Where Id = \'' + paramId + '\'';
		List<XXX__c> xxxList = new List<XXX__c>();
		xxxList = Database.query(soql);

		for (Test__c eachTest : xxxList) {

			w.writeStartElement(null, 'country', null);
			w.writeCharacters(eachTest.country__c);
			w.writeEndElement(); 
			w.writeCharacters('\n');
		}

		//end meta  
		w.writeEndElement(); 
		w.writeEndDocument();
		String xmlOutput = w.getXmlString();
		w.close();
		return xmlOutput;
	}

If the XML file output item is mandatory,
since it can not be saved temporarily,
I'm not thinking about making it indispensable.

If possible, avoid creating a standard page with VF from a maintenance point of view.
* I want to make Lightning work, so I don't want to create "OnClick Javascript button".

I'm pleased if you can teach.

Best regards,
AYK
  • January 24, 2018
  • Like
  • 0
いつもお世話になっております。

参照画面の項目をカスタムボタン押下で
XML出力させたいと考えております。

その際に未入力項目等がある場合、
XML出力はさせずに入力を促す画面又は、
エラーメッセージを表示させたいと考えておりますが、実現可能でしょうか。

<visualforce>
<apex:page cache="false" standardController=“Test__c” extensions="TestController" contentType="text/xml;charset=UTF-8#test.xml" showHeader="false" >
	<apex:outputText escape="true" value="{!xml}" />
</apex:page>
<Apex>
public class TestController {

	public TestController(ApexPages.StandardController controller) {
	}

	public String getXml() {
		
		XmlStreamWriter w = new XmlStreamWriter();
		Id paramId = ApexPages.currentPage().getParameters().get('id');

		w.writeStartDocument('UTF-8', '1.0');
		w.writeCharacters(‘\n’);

		//start meta  
		w.writeStartElement(null, ‘meta’, null);
		w.writeCharacters('\n	');

		String soql = 'Select ' + getAllFieldNames(‘XXX__c’) + 
			          ' From XXX__c’ + 
			          ' Where Id = \'' + paramId + '\'';
		List<XXX__c> xxxList = new List<XXX__c>();
		xxxList = Database.query(soql);

		for (Test__c eachTest : xxxList) {

			w.writeStartElement(null, 'country', null);
			w.writeCharacters(eachTest.country__c);
			w.writeEndElement(); 
			w.writeCharacters('\n');
		}

		//end meta  
		w.writeEndElement(); 
		w.writeEndDocument();
		String xmlOutput = w.getXmlString();
		w.close();
		return xmlOutput;
	}
XML出力項目を必須項目とさせてしまうと、
一次保存することができないため、
必須項目にさせることは考えておりません。

なるべく、標準の参照画面のVF化は、
メンテナンスの観点で避けたいと考えております。
(Lightning でも動作させたいためカスタムボタンのJavaScript も同様)

ご教示いただければ幸いでございます。
  • January 12, 2018
  • Like
  • 0
いつもお世話になっております。

参照画面の項目をカスタムボタン押下で
XML出力させたいと考えております。

その際に未入力項目等がある場合、
XML出力はさせずに入力を促す画面又は、
エラーメッセージを表示させたいと考えておりますが、実現可能でしょうか。

<visualforce>
<apex:page cache="false" standardController=“Test__c” extensions="TestController" contentType="text/xml;charset=UTF-8#test.xml" showHeader="false" >
	<apex:outputText escape="true" value="{!xml}" />
</apex:page>
<Apex>
public class TestController {

	public TestController(ApexPages.StandardController controller) {
	}

	public String getXml() {
		
		XmlStreamWriter w = new XmlStreamWriter();
		Id paramId = ApexPages.currentPage().getParameters().get('id');

		w.writeStartDocument('UTF-8', '1.0');
		w.writeCharacters(‘\n’);

		//start meta  
		w.writeStartElement(null, ‘meta’, null);
		w.writeCharacters('\n	');

		String soql = 'Select ' + getAllFieldNames(‘XXX__c’) + 
			          ' From XXX__c’ + 
			          ' Where Id = \'' + paramId + '\'';
		List<XXX__c> xxxList = new List<XXX__c>();
		xxxList = Database.query(soql);

		for (Test__c eachTest : xxxList) {

			w.writeStartElement(null, 'country', null);
			w.writeCharacters(eachTest.country__c);
			w.writeEndElement(); 
			w.writeCharacters('\n');
		}

		//end meta  
		w.writeEndElement(); 
		w.writeEndDocument();
		String xmlOutput = w.getXmlString();
		w.close();
		return xmlOutput;
	}
XML出力項目を必須項目とさせてしまうと、
一次保存することができないため、
必須項目にさせることは考えておりません。

なるべく、標準の参照画面のVF化は、
メンテナンスの観点で避けたいと考えております。
(Lightning でも動作させたいためカスタムボタンのJavaScript も同様)

ご教示いただければ幸いでございます。
  • January 12, 2018
  • Like
  • 0