You need to sign in to do that
Don't have an account?
AYK
XMLファイル出力時の入力チェックについて
いつもお世話になっております。
参照画面の項目をカスタムボタン押下で
XML出力させたいと考えております。
その際に未入力項目等がある場合、
XML出力はさせずに入力を促す画面又は、
エラーメッセージを表示させたいと考えておりますが、実現可能でしょうか。
<visualforce>
一次保存することができないため、
必須項目にさせることは考えておりません。
なるべく、標準の参照画面のVF化は、
メンテナンスの観点で避けたいと考えております。
(Lightning でも動作させたいためカスタムボタンのJavaScript も同様)
ご教示いただければ幸いでございます。
参照画面の項目をカスタムボタン押下で
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 も同様)
ご教示いただければ幸いでございます。
試していないためうまくいくかはわかりませんができるような気がします。
(もしかするとcontentTypeの指定の場合はapex:pageのaction処理が動かなかったかもしれません。)
action処理は盲点でした…ご提案頂き有難うございます!
早速、試させて頂いたところcontentTypeを指定していてもaction処理は動作しました。
値判定処理はaction処理で行いたいと思っておりますが、
ユーザに未入力項目を促す方法として、ページ遷移処理以外の方法がないか模索しております。
ポップアップ画面を表示して「◯◯◯(未入力項目)が未入力です」を表示するなど。
入力規則で、標準の編集画面の上部にエラーメッセージを表示するように、
標準の詳細画面が表示された状態で文言を表示できればベストなのですが…。
文言を表示させるために<apex:detail>を使ったVFを作成するなど、
VF画面を作成し遷移する方法以外難しいでしょうか。
何卒、宜しくお願い致します。
もし文言を表示するだけでしたらテキストだけを表示するVFを用意して詳細ページに埋め込むという方法も利用できるかもしれません。こちらもデザイン的にイマイチな気はするのですが無理にapex:detailに差し替えるよりは標準よりに実装できると思います。