Всем привет, буду благодарен тому кто объяснит следующее поведение (а вначале угадает его, гг).
В общем возникла такая проблема, по шагам:
1. Создал обертку, допустим MyWrapper
class MyWrapper {
public Object__c myObject {get;set;}
}
2. В контроллере есть такой метод
public MyWrapper wrapper {get;set;}public void refreshMyObject() {
// Field1__c - picklist
// Field2__c - text
if (wrapper.myObject.Field1__c == CONCRETE_VALUE) {
wrapper.myObject.Field2__c = null;
}
}
3. В VF странице примерно такое
<apex:inputField value="{!wrapper.myObject.Field1__c}">
<apex:actionSupport event="onchange" action="{!refreshMyObject}" rerender="myPanel"/>
</apex:inputField>
<apex:outputPanel layout="none" rendered="{!wrapper.myObject.Field1__c == CONCRETE_VALUE}">
<apex:inputField value="{!wrapper.myObject.Field2__c}"/>
</apex:outputPanel>4. Угадайте какое будет поведение при
5. Это поведение я исправил (скорее всего костылём)
Хотел бы услышать ваши мнения.
А что должно произойдти, поидее все нормально. Костиль уже не добавлен в код?
RasMisha, с удовольствием пообщался с тобой на счет этого примера, но голова настолько забита текущей задачей, что просто не осилил даже.
Но я заметил эту проблему своего мозга уже давно
Если мне реально не надо разобраться с чем-то по работе код мне кажется вообще неподъемным.
Сколько раз на форуме выкладывали код и кажется что задача жопа, но буквально через пару дней сталкиваешься с такой проблемой и все оказывается простым если включить мозги.
Короче я сюда захожу когда хочу немного отключить мозг
Так что переживаю по существу твоего вопроса, но в этом состоянии я хуже студента ![]()
Так что переживаю по существу твоего вопроса, но в этом состоянии я хуже студента
Ни у кого нет мыслей что ли?
У меня не получилось отрепродюсить, поле равно null после шага 4.4
Только что сам воспроизвел, т.к. в первом посте писал по памяти и не полный код, добавляю свой код с дев.орга
1. MyWrapper
public class MyWrapper {
public MyObject__c myObject {get;set;} public void AddObject(MyObject__c newObject) {
myObject = newObject;
}
}
2.MyController
public class MyController { public MyWrapper wrapper {get;set;}
public MyController() {
wrapper = new MyWrapper();
addMyObject();
}
public void addMyObject() {
wrapper.AddObject(new MyObject__c());
}
public void refreshMyObject() {
if (wrapper.myObject.Field1__c != 'Yes') {
wrapper.myObject.Field2__c = null;
}
}
}
3. MyPage
<apex:page showHeader="true" sidebar="true" controller="MyController"><apex:form>
<apex:outputPanel layout="Block" id="myPanel">
<apex:inputField value="{!wrapper.myObject.Field1__c}">
<apex:actionSupport event="onchange" action="{!refreshMyObject}" reRender="myPanel"/>
</apex:inputField>
<apex:outputPanel layout="none" rendered="{!wrapper.myObject.Field1__C == 'Yes'}">
<apex:inputField value="{!wrapper.myObject.Field2__c}"/>
</apex:outputPanel>
</apex:outputPanel>
</apex:form>
</apex:page>
4. MyObject__c состоит из 2х полей
Field1__c - пиклист с 2мя значениями Yes/No
Field2__c - текст
ps Если что могу сделать видео :)
Ну ладно, в общем тогда моё решение и через что я до него дошел.
Сначале я попробовал заменить wrapper.myObject на <apex:variable .../> и дальше пользоваться переменной.
Результат тот же.
Следующим шагом я заменил
public MyWrapper wrapper {get;set;}на массив (который по логике мог содержать только один элемент)
public MyWrapper[] wrapper {get;set;}В итоге через <apex:repeat var="..." value="wrapper.myObject"/> это поведение изменилось на нужное мне.
По ходу все бессильны
http://salesforce.stackexchange.com/questions/71785/please-help-explain-this-behavior
Пятниццо ![]()
Может ты на какой косяк salesforce наткнулся?
Здесь есть отдельная тема (длиииииная) по косякам от salesforce
Просто думал кому интересно поковыряться
Мало ли какие еще "грязные" дела могут сделать свойства в ваших проектах.
Но, видимо, не очень интересно :)
Просто думал кому интересно поковырятьсяМало ли какие еще "грязные" дела могут сделать свойства в ваших проектах.
Но, видимо, не очень интересно :)
Интересно. Я просто почти 2 дня мудохался с компонентами и формами.
А я до сих пор (22.00 пятница) мудохаюсь с задачей сдедать супер дупер библиотеку медиа на js (как на wordpress), интегрировать ее с salesforce, WYSIWYG редактором и s3 ![]()
А я до сих пор (22.00 пятница) мудохаюсь с задачей сдедать супер дупер библиотеку медиа на js (как на wordpress), интегрировать ее с salesforce, WYSIWYG редактором и s3 :D
буду еще писать не один вечер