Java EE и Struts и JSP: заполнение Java-форм - бин действий и т. Д. - PullRequest
0 голосов
/ 04 февраля 2011

Привет всем.

* 1003 проблемный *

Ошибка при заполнении nl.strohalm.cyclos.controls.cv.CvUploadForm@317bdd в / member / cvUpload javax.servlet.ServletException: BeanUtils.populate

Я работаю над приложением wep с открытым исходным кодом и пытаюсь научить себя некоторым навыкам, добавив новую функциональность.

Теперь веб-приложение называется cyclos и использует - НАСТРОЙКА Java EE, Struts, Hibernate, JSP, Tiles-def (spring, MySql JavaScript): элементы управления, DAO, службы, объекты и т. Д.

Я пытаюсь добавить новые функции, такие как база данных CV, чтобы пользователи могли сохранить шаблон и файл.

Моя типовая форма JSP выглядит следующим образом:

<ssl:form method="post" action="/member/cvUpload" enctype="multipart/form-data">
<html:hidden property="id" />
<html:hidden property="owner" />
<html:hidden property="uploadDate" />

<table class="defaultTableContent" cellspacing="0" cellpadding="0">
    <tr>
        <td class="tdHeaderTable">TITLE HERE PLEASE !!!></td>

    </tr>
    <tr>
        <td colspan="2" align="left" class="tdContentTableLists">
            <table class="defaultTable">
                <tr>
                    <th class="tdHeaderContents" width="30%"> CV Upload -> needs properties copy / ref !!!</th>
                    <th class="tdHeaderContents" width="60%">&nbsp;</th>
                </tr>
                <tr>
                    <td>Notes </td>
                    <td><cyclos:richTextArea name="notes"  styleId="descriptionText"/></td>
                </tr>
                <tr>
                    <td>Address</td>
                    <td><html:text value="address" size="25" property="address" /><br>
                        <html:text value="address" size="25" property="address2" />
                        <html:text value="address" size="25" property="address3" />
                    </td>
                </tr>
                <tr>
                    <td>Phone Number</td>
                    <td><html:text value="0791 000 000" size="15" property="phoneNumber"/></td>
                </tr>
                <tr>
                    <td>Field of interest / industry</td>
                    <td><c:forEach var="industry" items="${industries}">
                            <label>
                                <html:radio property="industry" value="${industry}" styleClass="radio" /><bean:message key="cv.industries.${industry}" />
                            </label>
                            </c:forEach>
                    </td>
                </tr>
                <tr>
                    <td>CV upload</td>
                    <td><html:file property="cvContent" /></td>
                </tr>
                <tr>
                    <td>
                        <input type="submit" id="saveButton"  value="<bean:message key="global.submit"/>" align="center">
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>

А моя форма java, заполненная стойками или как-то так выглядит:

public class CvUploadForm extends BaseBindingForm {

private Long                id;
@IndexedEmbedded(depth = 4)
private Member              owner;
// private Calendar                       creationDate;
// private Member                         memberId;
private FormFile                cvContent;
private Calendar            uploadDate;
private long                memberId;

public CvUploadForm() {
}

public CvUploadForm(Long id, Member owner, FormFile cvContent, Calendar uploadDate) {
    this.id = id;
    this.owner = owner;
    this.cvContent = cvContent;
    this.uploadDate = uploadDate;

}

public Map<String, Object> getCv() {
    return values;
}
public void setCv(final Map<String, Object> map) {
    values = map;
}

public void setCv(final String key, final Object value) {
    values.put(key, value);
}

// ++ GETTERS SETTERS ++

// ==================================================

Теперь я могу отобразить свой шаблон, но моя отправка не будет работать -> и я хотел бы понять проблему / ошибку, отображаемую в моем окне вывода !! (см. вверху и следующая ошибка)

следующая ошибка отображается следующим образом:

Причина: java.lang.IllegalArgumentException: Невозможно вызвать nl.strohalm.cyclos.controls.cv.CvUploadForm.setOwner - несоответствие типа аргумента

Плюс еще пара ошибок. (владелец ov cv ссылается на другую таблицу-член как ID - использует перечисление java - отношения ... fetch

Я очень благодарен за любой ответ! И, возможно, некоторые разъяснения по поводу настройки. Я думал, что я использую форму для отображения битов в JSP, и использую файл сущности CV.java для отображения и т. Д. , так что я немного растерялся, получив все файлы и правильное соединение, а также поймал ошибку здесь

Спасибо за любой ответ, если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Alex

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Вы должны уточнить, если это Struts 1 или Struts 2. Struts 1 отображает свойства в actionForm, если это так, вы должны использовать примитивные типы в форме действий (не объекты, такие как member). Struts 2 использует OGNL для отображения сложных объектов на их конкретные bean-компоненты.

это мой первый пост о стеке над потоком, надеюсь, он вам поможет.

1 голос
/ 04 февраля 2011

Вы должны увидеть, какой тип объекта он пытается передать методу setOwner.Это не объект типа Member.

Используйте отладчик и попытайтесь увидеть, что пытается передать.

...