В основном то, что я сейчас имею, выглядит примерно так:
<view-state id="pageOne" view="pageone.xhtml">
<transition on="gotoPageTwo" to="doGotoPageTwo" />
</view-state>
<subflow-state id="doGotoPageTwo" subflow="pageTwo">
<transition on="return" to="pageOne" />
</subflow-state>
С кодом JSF:
<h:commandLink value="Page Two" action="gotoPageTwo" />
Пока все хорошо. То, что я хочу сделать дальше, похоже на:
<h:commandLink value="Page Two" action="gotoPageTwo(customArgument)" />
И
<view-state id="pageOne" view="pageone.xhtml">
<transition on="gotoPageTwo" to="doGotoPageTwo" />
</view-state>
<subflow-state id="doGotoPageTwo" subflow="pageTwo">
<input name="myCustomArgument" value="customArgument" />
<transition on="return" to="pageOne" />
</subflow-state>
Я знаю, что это, очевидно, не работает как есть, но, надеюсь, вы поняли концепцию. Единственное решение, которое я нашел, это использование actionListener для помещения данных в какую-то псевдоглобальную переменную (либо в связанный bean-компонент, либо в flash- / flow-Scope). Это выглядит как отвратительное решение, не сильно отличающееся от помещения ваших аргументов в глобальные переменные вместо передачи их в c ++. Есть ли лучший способ сделать это?
Ps. Мы также используем Primefaces, но я не думаю, что это уместно в этой ситуации.