3
0

OutsystemsでInput Widget(Number)にInteger型変数をバインドしてハマった話

Last updated at Posted at 2024-08-26

何にハマったか

Outsystemsの画面入力項目にバインドした変数が0になってしまう。
調べていくと、画面入力項目に小数を入力した場合にバインドした変数が0になることが分かった。

何をしてしまったか

入力とボタンを配置した簡単なプログラムを作成した。
入力を整数として変数に保持する。

Outsystemsでは入力項目(Input Widget)に対してInput Typeを設定することができる。
また、Variable項目に変数を指定し、入力や変更をその変数に反映することができる。
以下の例は、数値の入力項目(Input_Var_Integer)に数値(Number)を入力することができ、入力値をVar_Integer変数(Integer)に反映させるコードとなる。

image.png

Input Typeに設定できる値は以下の通り。

image.png

何が起きたか

上記のコードを実行し、値を設定してみる。

・整数の場合は変数に正しい値が反映
image.png

・未入力の場合は変数に0が反映(直感的にわからないでもない)
image.png

・小数の場合は変数に0が反映(!?)
image.png

C#でfloatをintにキャストしたときのように、100が入るものかと先入観が働いていた。

      float f = 100.123f;
      int i = (int)f;

0になるという予想をしていなかったため、原因箇所はほかにあると思い込んでしまい、原因特定に時間がかかってしまった。

結論

Input Widgetにバインドされた変数を参照する前に、FormのValidationがクリアされていることを確認しましょう!

余談

Validationをクリアしていない入力項目の値はNullになるのかと予想した。
Email型で検証したところ、Validationをクリアできない値を入れた場合でもバインドされた変数に入力された値が格納されていた。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0