EL式のエラー「The array has '1' elements, index '1' is invalid」
データ更新タスクを使って、文字列Aをカンマで分割し、1つ目を文字列Bに入れる、2つ目を文字列Cに入れる、3つ目を文字列Dに入れる・・・という事をやりたいです。
↓これはエラーになりませんでした。
#{#q_text25 == null ? "" : #q_text25?.split(",")[0]}
|
数式が意図通りにできているか教えていただけないでしょうか。
よろしくお願いいたします。
-
配列要素の参照の書き方に誤りがある訳ではないのですが、入力文字列(#q_text25)に「,(カンマ)」が含まれてない場合、「1」で指定された配列要素は存在しませんので式エラーとなってしまっております。
(内部的にはランダムな文字列を生成して式評価が行われます。想定している入力文字列では問題なく動作する場合であっても、設定時のチェックでエラーとなってしまうことがございます。)> #{(#q_text25+",a,b,c,d,e,f,g,h,i,j,k")?.split(",")[1]}
「無理やり」の方法もひとつの対応策となりますが、別の対応策としては、null 判定に加え配列長判定も行う方法がございます。
#{#q_text25 != null and #q_text25.split(",").length > 1 ? #q_text25.split(",")[1] : ""}
もしくは
#{#q_text25?.split(",")?.length > 1 ? #q_text25.split(",")[1] : ""}
-
回答ありがとうございます。「ランダムな文字列を生成して式評価が行われます」という事を初めて知りました。エラーの理由が理解できました。
実物はこのようになっています。
提案いただいた式ですと、数値を2か所を変えなければならずちょっと手間がかかると思いました。
#{#q_text25?.split(",")?.length > 1 ? #q_text25.split(",")[1] : ""}
なので、今のまま行こうと思っています。
余談ですが、下記の式はエラーチェックを通過できます。選択肢型は別のチェックをしているからでしょうか。
#{#q_select == null ? "" : #q_select?.get(0)?.getValue().split(",")[0]}
サインインしてコメントを残してください。
コメント
5件のコメント