|
|
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые. Только начал изучать APEX (последняя версия на http://apex.oracle.com), сразу наткнулся на непонятную особенность. Пример. Есть текстовое поле P2_ITEM1. Создал кнопку, к ней DA на событие "Click", к нему действие "Execute PL/SQL code", которое заполняет это поле текущей датой (с секундами, чтобы видеть изменения). В свойствах также указал "Page Items to Submit" - P2_ITEM1, "Page Items to Return" - P2_ITEM1. При нажатии этой кнопки поле заполняется текущей датой, новое значение сразу видно в поле. Теперь, если обратиться к значению поля в PL/SQL коде как :P2_ITEM1, либо в JavaScript коде как $v('P2_ITEM1'), то доступно новое, только что занесённое значение. А вот если использовать написание &P2_ITEM1. , то получается старое значение. Это сразу видно при выполнении JS скрипта alert($v('P2_ITEM1')); alert('&P2_ITEM1.'); Если после этого сделать submit всей страницы, то новое значение поля доступно и через &P2_ITEM1. Скажите, это баг или фича? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 10:12 |
|
||
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
Это не баг и не фича. Это не понимание того что вы выводите алертом. Посмотрите код алертов в браузере возможно вам станет понятней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 11:57 |
|
||
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
Посмотрел в браузере код страницы - стало ещё более непонятно... Мои два алерта, повешенные на кнопку, выглядят так: alert($v('P2_ITEM1')); alert('<здесь новое значение поля в текстовом виде>'); Т.е., во втором алерте в явном виде задано новое значение поля (к примеру, '01.09.2016 10:16:39'). Но при нажатии на кнопку выводится старое значение ('01.09.2016 10:15:27'). Можно и без алертов. Создадим второе текстовое поле P2_ITEM2, и будем заполнять его значением из первого. Если заполнять кодом PL/SQL :P2_ITEM2 := :P2_ITEM1; или кодом JS $s('P2_ITEM2',$v('P2_ITEM1')); то значение поля будет новое. А если заполнять кодом JS $s('P2_ITEM2','&P2_ITEM1.'); или через DA действием "Set Value", подставляя значение &P2_ITEM1. , то значение &P2_ITEM1. , как и в алертах, выдаёт старое значение. Я не занудствую, хочется понять, какое практическое применение может быть у &P2_ITEM1. без полного submit-а всей страницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 13:43 |
|
||
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
vlad6666В свойствах также указал "Page Items to Submit" - P2_ITEM1, "Page Items to Return" - P2_ITEM1. придумай адекватную задачу с разными полями, а не одинаковыми. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 13:50 |
|
||
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
$v('<Имя переменной>') - это JS функция обращается к элементу с ID=<Имя переменной> и получает его значение (делает что то типа GetElementById('<Имя переменной>').value) :<Имя переменной> - это в PL/SQL происходит подстановка переменной (скорее всего там происходит что то типа dbms_sql.bind_variable(c,'<Имя переменной>','<значение>') &<Имя переменной>. - это подстановка в HTML, apex не хранит страницы он при обращении их генерирует, из своих шаблонов из того что вы ввели, когда он генерирует страницу он заменяет &<Имя переменной>. на <значение>. Что использовать и в какой момент решать вам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 14:22 |
|
||
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
Всем откликнувшимся спасибо. Поэкспериментировал ещё, и уяснил для себя, что &P2_ITEM1. содержит актуальное значение (соответствующее тому, что видно на экране) либо после полного сабмита всей страницы (если поле P2_ITEM1 не сабмитилось ранее отдельно), либо после рефреша страницы (если значение уже передано на сервер, т.е., если ранее был сабмит поля, например, в рамках DA с операцией "Execute PL/SQL code" и опцией "Page Items to Submit" = P2_ITEM1). Т.е., в принципе, в один момент времени в разных местах могут лежать три разных значения одного поля: 1. &P2_ITEM1., лежащее где-то в браузере в статическом виде 2. значение, отправленное ранее на сервер сабмитом 3. значение, отображаемое в поле на экране. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 16:03 |
|
||
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
vlad6666в один момент времени в разных местах могут лежать три разных значения одного поля: перебор) - 2 штуки. На сервере и на клиенте. всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 16:23 |
|
||
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
Petro123перебор) - 2 штуки. На сервере и на клиенте. всё. 1. Ввели в браузере в поле значение 111 в поле - 111 на сервере - пусто в &ITEM. - пусто 2. Submit страницы в поле - 111 на сервере - 111 в &ITEM. - 111 3. Изменили значение поля на 222 в поле - 222 на сервере - 111 в &ITEM. - 111 4. Submit одного поля (напр., через DA с PL/SQL кодом) в поле - 222 на сервере - 222 в &ITEM. - 111 5. Изменили значение поля на 333 в поле - 333 на сервере - 222 в &ITEM. - 111 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 16:54 |
|
||
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
vlad66664. Submit одного поля (напр., через DA с PL/SQL кодом) в поле - 222 на сервере - 222 в &ITEM. - 111 этот код не имеет смысла без предварительной отправки с клиента на сервер СВЕЖЕГО значения. Это делается декларативно в Page Items to Submit - указать поле. Тогда сначала отправится значение на сервер, потом выполнится код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 17:00 |
|
||
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
Petro123vlad66664. Submit одного поля (напр., через DA с PL/SQL кодом) в поле - 222 на сервере - 222 в &ITEM. - 111 этот код не имеет смысла без предварительной отправки с клиента на сервер СВЕЖЕГО значения. Это делается декларативно в Page Items to Submit - указать поле. Тогда сначала отправится значение на сервер, потом выполнится код. Я про это и пишу - ввели в поле свежее значение 222, после чего отправили его на сервер (DA с PL/SQL кодом, с указанием в Page Items to Submit этого поля). После этого ввели в поле ещё более свежее значение 333. При этом в &ITEM. так и осталось самое первое значение 111. Если сделать рефреш страницы, оно станет 222 (при этом и поле сбросится на 222), если сабмит страницы, то 333. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 17:11 |
|
||
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 17:13 |
|
||
|
Submit айтема и submit всей страницы
|
|||
|---|---|---|---|
|
#18+
Petro123vlad6666Я про это и пишу нет. Вот тут ты ноль реакции 19617211 Я написал, что " ... в принципе , в один момент времени в разных местах могут лежать три разных значения одного поля", и проиллюстрировал это. Т.е., APEX допускает такую ситуацию (возможно, она возникнет только у говнокодеров типа меня). Но, тем не менее, факт - в разных местах могут одновременно существовать три разных значения одного поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2016, 17:22 |
|
||
|
|

start [/forum/topic.php?fid=50&msg=39302187&tid=1874538]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 443ms |

| 0 / 0 |
