function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
AYKAYK 

XMLファイル出力時の入力チェックについて

いつもお世話になっております。

参照画面の項目をカスタムボタン押下で
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 も同様)

ご教示いただければ幸いでございます。
Taiki YoshikawaTaiki Yoshikawa
apex:pageタグにaction処理を記述してそちらで値判定処理とページ遷移処理を記述するのはいかがでしょうか。
試していないためうまくいくかはわかりませんができるような気がします。
(もしかするとcontentTypeの指定の場合はapex:pageのaction処理が動かなかったかもしれません。)
AYKAYK
Taiki Yoshikawa 様

action処理は盲点でした…ご提案頂き有難うございます!
早速、試させて頂いたところcontentTypeを指定していてもaction処理は動作しました。

値判定処理はaction処理で行いたいと思っておりますが、
ユーザに未入力項目を促す方法として、ページ遷移処理以外の方法がないか模索しております。
ポップアップ画面を表示して「◯◯◯(未入力項目)が未入力です」を表示するなど。

入力規則で、標準の編集画面の上部にエラーメッセージを表示するように、
標準の詳細画面が表示された状態で文言を表示できればベストなのですが…。
文言を表示させるために<apex:detail>を使ったVFを作成するなど、
VF画面を作成し遷移する方法以外難しいでしょうか。

何卒、宜しくお願い致します。
Taiki YoshikawaTaiki Yoshikawa
ボタンクリック時に入力値の判定をする場合はやはりカスタムボタンとJavaScriptを使う必要があると思います。ご記載の通りLightning Experience対応で移行完了まで2重管理になってしまうと思いますが...。

もし文言を表示するだけでしたらテキストだけを表示するVFを用意して詳細ページに埋め込むという方法も利用できるかもしれません。こちらもデザイン的にイマイチな気はするのですが無理にapex:detailに差し替えるよりは標準よりに実装できると思います。