У меня есть некоторый код, который, если пользователь выбирает ответ «НЕТ» в определенном поле (Q1), удаляет ответы на подвопрос, относящиеся к Q1, а также скрывает их в пользовательском интерфейсе.
Это прекрасно работает, и я делаю частичное обновление в div, содержащем все вопросы.Однако, когда я затем нажимаю на тот же вопрос, выбирая ответ «Да», который затем показывает все подвопросы, чтобы пользователь мог ответить на них снова, им все еще присваиваются старые значения.
Когда я удаляю поляв бэкэнд-документе это отражается правильно, но затем, когда я нажимаю на вопрос, который снова отображает поля в пользовательском интерфейсе, они снова появляются в бэкэнд-документе со своим исходным значением.Если я выполняю context.reloadPage () в конце моего кода, все работает как положено, но это нарушает другие функции, и я хочу только частичное обновление.Есть идеи?Спасибо
try{
if (compositeData.onClickCode) {
compositeData.onClickCode.invoke( facesContext, null );
}
document1.save();
var fieldName:string = compositeData.fieldName;
//Blank all IFM fields if user selects no IFM *CHANGE FIELDS ARRAY TO GET FROM KEYWORD*
if (fieldName == "Q1") {
print("Yes Q1");
if(document1.getItemValueString(fieldName)=="No") {
print("NO IFMS");
var questionsIFM = ["Q1a", "Q1b", "Q1c", "Q3IFM", "Q3bIFM", "Q3cIFM", "Q3dIFM", "Q4", "Q4a" ,"Q5IFM", "Q6IFM", "Q6aIFM", "Q7IFM",
"Q7aIFM", "Q7bIFM", "Q8", "Q8a", "Q9IFM", "Q9aIFM", "Q9bIFM", "Q10IFM", "Q11IFM"];
var len = questionsIFM.length;
for (i = 0; i < len; i++) {
print("Field Name: " + questionsIFM[i]);
document1.removeItem(questionsIFM[i]);
}
document1.save();
//context.reloadPage();
}
}
var guidanceOptions:string = "";
if (compositeData.guidanceOptions) {
if(@IsMember(document1.getItemValueString(fieldName), compositeData.guidanceOptions)){
guidanceOptions = document1.getItemValueString(fieldName);
}
}
viewScope.guidance = compositeData.fieldName+guidanceOptions;
}catch(e){
openLogBean.addError(e,this.getParent());
}