2014-02-19 2 views
0

У меня есть Xpage, состоящая из нескольких пользовательских элементов управления - макета приложения, содержимого (сетка dojo_data) и настраиваемого элемента управления, который показывает некоторые пользовательские данные, которые пользователь может изменить.«Ошибка при обновлении некоторых страниц» Статус 500 Xpages Save

Все отлично работает в клиенте 9, но в сети я получаю следующее сообщение об ошибке: enter image description here

Журнал показывает это:

CLFAD0134E: запрос Исключение обработки XPage

У меня есть сохранить в пользовательском элементе с пользовательскими данными, которые имеют SSJS:

var usrNme = session.getCommonUserName(); 
var v:NotesView = database.getView("(employeesByFullName)"); 
var doc:NotesDocument = v.getDocumentByKey(usrNme); 

var tmpOfficePhone = employee.getItemValueString("HR_OfficePhone") 
doc.replaceItemValue("HR_OfficePhone",tmpOfficePhone); 

var tmpCellPhone = employee.getItemValueString("HR_CellPhone") 
doc.replaceItemValue("HR_CellPhone",tmpCellPhone); 

var tmpExtension = employee.getItemValueString("HR_Extension") 
doc.replaceItemValue("HR_Extension",tmpExtension); 

var tmpDirectDial = employee.getItemValueString("HR_DirectDial") 
doc.replaceItemValue("HR_DirectDial",tmpDirectDial); 

var tmpPersonalEmail = employee.getItemValueString("HR_PersonalEmail") 
doc.replaceItemValue("HR_PersonalEmail",tmpPersonalEmail); 

doc.save(); 

var x= "alert('Your changes have been saved.')"; 
view.postScript(x); 

У меня есть частичное обновление, и независимо от того, что я выбираю для обновления, я все равно получаю ошибку, просто с немного другой формулировкой. Пример: я помещаю все в панель и выполняю частичное обновление на панели, и я получаю сообщение об ошибке для панели.

Он ВСЕГДА работает в клиенте, но никогда не работает в веб-браузере.

Может ли кто-нибудь сказать мне, что происходит?

+0

Чтобы узнать подробности, проверьте свои журналы XPages на сервере в папке data \ IBM_TECHNICAL_SUPPORT. –

+0

Bryan, я очень рекомендую установить XPage Log File Reader, поскольку он дает вам очень легкий доступ к этим файлам журналов: http://www.openntf.org/main.nsf/project.xsp?r=project/XPages+ Log + File + Reader –

+0

Отличная идея, сделаю. Благодаря! –

ответ

0

Большое спасибо Саймон. Я не знал об этом месте за ошибки. Я обнаружил следующее:

Script interpreter error, line=6, col=5: 'doc' is null 
    4: 
    5: var tmpOfficePhone = employee.getItemValueString("HR_OfficePhone") 
-> 6: doc.replaceItemValue("HR_OfficePhone",tmpOfficePhone); 
    7: 
    8: var tmpCellPhone = employee.getItemValueString("HR_CellPhone") 

Документ был нулевым, потому что у меня был плохая часть кода, чтобы установить документ. Я использовал session.getCommonName, но должны были с помощью:

var usrNme = @Name("[CN]",session.getEffectiveUserName()); 

После замены этой строки кода, все работало. Благодаря!!!

+1

Есть ли конкретная причина, по которой вы преодолеваете все проблемы с кодом, вместо прямого привязки полей к документу? Или любой другой вариант привязки? Переход к компонентам пользовательского интерфейса делает ваш код очень уязвимым для изменения имени. – stwissel

+0

Потому что я не знаю, как это сделать. Я бы предпочел сделать это. Как настроить источник данных, который получает конкретный документ? –

+0

Это создаст новый новый вопрос – stwissel

1

Вы хотите переделать приложение и использовать привязку данных вместо того, чтобы идти за документом и элементами управления вручную. Вы можете начать с a tutorial, но вот суть его:

  1. Добавление источника данных DominoDocument на страницу
  2. Укажите форму ваших документов (которые на самом деле нужен только для удобства конструктора и в случае, когда вам необходимо/желательно использовать .computeWithForm
  3. Дизайн вашей формы, связывая ваши различные элементы управления источником данных DominoDocument. по умолчанию, который связывает его на новый пустой документ. Обычно это хороший выбор (см ниже)

Теперь, чтобы фактически изменить существующий документ с этой XPage, выполните одно из следующих действий:

  • Открыть Классическую Форму и указать в свойствах бобовых голов: Open XPage вместо (есть 2 СВОЙСТВА: один для клиента одного для браузера). Когда вы открываете документ с его классическим URL-адресом, он будет открыт в XPage (? OpenDocument и? EditDocument)
  • Добавить viewControl на XPage (на той же странице или другой), где вы показываете документы для выбора.В viewControl укажите ваш XPage, который будет использоваться для открытия документов.
  • вычислить, каким образом вы хотите, чтобы URL-адрес включал documentID =, который переключается с нового на режим отображения/редактирования (смотрите URL-адреса, которые обрабатывает элемент управления представлением)
  • Переключите форму в «Существующий документ» и вычислите документ docid (uniqueid) документа как свойство. Может быть поиск scopeVariable или что вы сочтете подходящим.

Дайте нам знать, как это происходит. Проверьте информацию о размере XPages Cheatsheet.

+0

Это очень полезно (особенно Xpages Cheatsheet). У меня есть представление с документами сотрудников, по одному на сотрудника, ключ которого общее имя пользователя. Когда пользователь переходит на эту страницу, я хочу представить им свой документ в режиме редактирования и сетку данных dojo со всеми документами, которые они не могут открыть. У меня возникают проблемы с тем, как связать конкретный документ для Xpage автоматически. Любые предложения будут очень оценены? –

+0

вы указываете UNID для документа сотрудника. Вы можете сделать @DbLookup в представлении с двумя столбцами. Имя пользователя first @Text (@DocumentUniqueID)) в th е секунду. Затем используйте что-то вроде @DbLookup (@DbName, «(LookupUserDoc)», @ Name («[CN]», @ UserName, 2)); Не стесняйтесь принять вопрос – stwissel

Смежные вопросы