• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Filedownload Contol - Как Привязать Поле Динамически?

  • Автор темы Автор темы phantom76
  • Дата начала Дата начала
P

phantom76

реализую следующую схему:

если в поле высталвен флаг, то на странице Xpage элемент FileDownload связываю с полем с вложениями из другого документа, если флага нет из текущего документа.
В Data Binding помещаю скрипт:

Код:
if ( dominoDocument1.getItemValue("ISHASCONTENT")=="1"){
repl_id = dominoDocument1.getItemValue("Orig_ReplicaID")
doc_id = dominoDocument1.getItemValue("Orig_ID")
srv = session.getCurrentDatabase().getServer()
db1 = session.getDatabase(null,null)
if (db1.openByReplicaID(srv,repl_id))
{
doc2 = db1.getDocumentByUNID(doc_id)
return doc2.getItemValue("Appendix")

}

}
else{
return dominoDocument1.getItemValue("Appendix")
}

на выходе имею в итоге Error 500. Где я так жестко ошибся?
 
ошибка пропала после обращению к полю непосредственно:

Код:
if ( dominoDocument1.getItemValue("ISHASCONTENT")=="1"){
repl_id = dominoDocument1.getItemValue("Orig_ReplicaID")
doc_id = dominoDocument1.getItemValue("Orig_ID")
srv = session.getCurrentDatabase().getServer()
db1 = session.getDatabase(null,null)
if (db1.openByReplicaID(srv,repl_id))
{
doc2 = db1.getDocumentByUNID(doc_id)
return doc2.Appendix		
}

}
else{
return dominoDocument1.ATT_body}

Еще одно уточнение:

веб интерфейс размещается в отдельной БД0, в которой не хранятся данные. По умолчанию он взаимодействует с документнами\представлениями БД1, но иногда документы БД1 содержат ссылки на документы БД2.

нормально открываются через веб-интерфейс БД0, но для есть 2 момента, которые не победил пока:

1. В документах открытых из БД1 отображаются вложения, но загрузить их не удается из-за того, что происходит попытка загрузить файл из текущей БДО а не БД1 ( это скорее всего допилю )

2. В документах открытых по ссылке из БД2 не отображаются вложения в элементе FileDownload Control.
 
А посмотри уровень доступа к базам через HTTP
Ну и включи "Show standard error page" может информации по больше будет? тогда точно получишь ответ на свой вопрос

Ну и смотрю по инету - многие советуют сделать клин и ребилд проекта
Ну еще link removed
 
А посмотри уровень доступа к базам через HTTP
Ну и включи "Show standard error page" может информации по больше будет? тогда точно получишь ответ на свой вопрос

Ну и смотрю по инету - многие советуют сделать клин и ребилд проекта
Ну еще link removed

спасибо!

ошибки сейчас нет, просто атачи не мапит в FileDownload.
Как правильно на java привязать поле к FileDownload Control?
 
остался вопрос по привязке поля на JavaScript в элементе FileDownload Control.

цель: флаг =1 мапим поле1 , флаг = 0 , мапим поле2. У меня не получилось или error 500 или пустое поле.
 
Все таки какую схему лучше придумать по Xpages?

коротко:

- веб интерфейс в отдельной БД, настроен на работу с данными из других БД. Документы, которые открываются через XPages, могут содержать вложенные файлы. Часть документов имееют атачменты, хранящиеся в отдельных БД. При отображении такого документа? под XPage, необходимо, так же загрузить на страницу, относящиеся к нему аттачи через элемент FileDownload Contorl. Технически столкнулся с проблемой при связи поля, содержащего аттачи с элементом управления XPage для варианта на JavaScript.
 
Все таки какую схему лучше придумать по Xpages?

коротко:

- веб интерфейс в отдельной БД, настроен на работу с данными из других БД. Документы, которые открываются через XPages, могут содержать вложенные файлы. Часть документов имееют атачменты, хранящиеся в отдельных БД. При отображении такого документа? под XPage, необходимо, так же загрузить на страницу, относящиеся к нему аттачи через элемент FileDownload Contorl. Технически столкнулся с проблемой при связи поля, содержащего аттачи с элементом управления XPage для варианта на JavaScript.
Ну попробую по копать
 
Все таки какую схему лучше придумать по Xpages?
Сделать xp:panel в которую добавить ещё один датасоурс - документ с атачами. Его и обрабатывать в Filedownload Contol.
Не проверял, просто набросал, что б идёю понял:
Код:
<xp:panel>
<xp:this.data>
<xp:dominoDocument var="attDoc" action="openDocument">
<xp:this.documentId><![CDATA[#{java script:var doc_id = util.getAttachmentsDocID();
return doc_id}]]></xp:this.documentId>
<xp:this.databaseName><![CDATA[#{java script:var db = util.getAttachmentsDb()
return db;}]]></xp:this.databaseName>
</xp:dominoDocument>
</xp:this.data>
<xp:fileDownload rows="30" id="fileDownload1" displayLastModified="false" value="#{attDoc.files}"></xp:fileDownload>
</xp:panel>

Ещё есть вариант не зацыкливаться на Filedownload Contol, а тупо сгенерировать список УРЛ'ов на атачи в других базах и отобразиь их в репите.
 
В принципе получилось по идее Zeka
Но есть проблемка... это все работает пока док новый. После сохранения работать отказывается
 
Но есть проблемка... это все работает пока док новый. После сохранения работать отказывается
Надо добавить ignoreRequestParams="true" в эту панельку. Иначе documentId основного документа (что передаётся в УРЛ) переписывает и unid документа с атачами.
 
Ок, по данной схеме все получилось. :) Спасибо!
Дополнительно пришлось перегенерировать ссылки для отдельных аттачей из некоторой особенности: в RT-поле и полях $File иногда не совпадают первоначальные названия файлов, пришлось получать дополнительно список аттачей к документу и мапить его при сборке сслыки в элементе FileDownlod.

Какие условия должны быть соблюдены, чтобы веб-интерфейс приложения не требовал авторизации?

- В ACL по дефолту разрешено чтение по всем базам открываемым через БД Xpages.
- В ACL добавлены запись Anonymous c правами на чтение
- создана конфигурация для сайта без авторизации

Авторизацию начинает требовать, если задаю параметры источников для дополнительного документам <xp:this.documentId>: если прописываю статикой конкретный ID, авторизация не требуется, если задаю через viewscope или значение поля из основного документам, то появляется окно для авторизации. Что может ее вызывать?

Код:
<xp:dominoDocument var="dominoDocument1" formName="Document"
action="openDocument">
</xp:dominoDocument>

<xp:dominoDocument
databaseName="TST/MOS!!app\origs.nsf"
formName="orig" ignoreRequestParams="true" var="OrigDocument"
action="openDocument">

<xp:this.documentId><![CDATA[#{java script:dominoDocument1.getItemValueString("Orig_ID")}]]></xp:this.documentId>
</xp:dominoDocument>
 
Возможно ли программно, принудительно всех пользователей, открывающих приложение через веб, по умолчанию, без запроса у пользователей авторизовывать по предопределенной учетке, что-то типо одна на всех?
 
:) я пробовал такое.... кое что даже получилось... но по хорошему - это большая дыра в безопасности. У такого метода нет жизни
 
:) я пробовал такое.... кое что даже получилось... но по хорошему - это большая дыра в безопасности. У такого метода нет жизни

я думаю это мой случай, требуется на чтение предоставить доступ к БД через веб всем юзерам без авторизации.
 
я думаю это мой случай, требуется на чтение предоставить доступ к БД через веб всем юзерам без авторизации.
Тю.... я думал задаче более глобальная... в твоем случае добавляешь в ACL пользователя Anonymous с правами ридера и будет тебе счастье.
Ну и соответственно разрешаешь доступ к базе из Internet
 
Тю.... я думал задаче более глобальная... в твоем случае добавляешь в ACL пользователя Anonymous с правами ридера и будет тебе счастье.
Ну и соответственно разрешаешь доступ к базе из Internet
Спасибо, но так у меня давно было сделано :)
проблему решил, создав отдельные элементы управления, для документов, атачменты которых, хранятся в текущем доке (документы 1-го типа) и там, где атачменты вынесены в отдельный док. (документы 2-го типа).
авторизацию начинал требовать как только пытался отобразить документ 1-го типа через общий элемент управления, где определено 2 источника типа документ (основной док и док с аттачами), причем это ошибочная ситуация (т.к. док с атачами в этом случае не существовал, попытки сделать второй источник опционным не сняли запрос в авторизации), т.к. даже после аторизации контент не отображался. Поэтому, создал отдельные элементы управления для разных типов документов и включил их определение на стадии генерации ссылок на документы, т.е. в ссылке сразу указывается через какой элемент управления отображать контент.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab