потребовалось некоторое время, чтобы истолковать документы Spring, но я наконец-то туда попал. Мое решение:
SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate)
.withProcedureName("DistinctRunNames")
.withoutProcedureColumnMetaDataAccess();
simpleJdbcCall.addDeclaredParameter(new SqlParameter("environment", Types.VARCHAR));
simpleJdbcCall.addDeclaredParameter(new SqlParameter("username", Types.VARCHAR));
simpleJdbcCall.addDeclaredParameter(new SqlParameter("test_suite", Types.VARCHAR));
SqlParameterSource parameters = new MapSqlParameterSource().addValue("environment", environment)
.addValue("username", username).addValue("test_suite", testSuite);
Map map = simpleJdbcCall.returningResultSet("runnames", new ParameterizedRowMapper<RunNameBean>() {
public RunNameBean mapRow(ResultSet rs, int rowNum) throws SQLException {
RunNameBean runNameBean = new RunNameBean();
runNameBean.setName(rs.getString("runname"));
return runNameBean;
}
}).execute(parameters);
return (List) map.get("runnames");
Были проблемы с ожидаемыми параметрами по сравнению с фактическими, пришлось разбить объект simpleJdbcCall. Карты результаты в список красиво. Спасибо за ответы, помог мне узнать о Spring mapping.
Это было немного, так как я сделал такую вещь в.NET, но после того как Вы начинаете клонировать исходные данные формы динамично, я думаю, что необходимо выйти в Запрос. Сформируйте и найдите отправленные значения вручную. Я описал код jQuery для клонирования немного (нефайл) исходные данные с последовательными идентификаторами здесь. Пока у Вас есть уникальные идентификаторы, можно выполнить цикл, чтобы видеть если Запрос. Форма ["MultiFile1_F" + счетчик] существует, и пойдите оттуда.
Две вещи проверить:
Кроме того, runat = "сервер" не должен иметь никакого отношения ли Запрос. Работы файлов или не - это - больше проблема браузера, на самом деле отправляющего файлы.
Этот плагин jQuery давал каждому сгенерированному элементу управления вводом тот же самый атрибут имени.
Поэтому файлы не отправляли.
Я создал свое собственное решение JavaScript.
Я отправлю ссылку на код в комментарии.
Я пересмотрел это и нашел, что то, что я пытался сделать, не было очень трудно вообще. Я получил jQuery, несколько регистрируют плагин загрузки, чтобы хорошо работать с моей формой aspx. Я не знаю, почему я испытывал такие затруднения прежде.
1.) Включайте библиотеку jQuery по веб-форме:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" />
2.) Сошлитесь на плагин файла нескольких на веб-форме (Загрузите его здесь):
<script src="jquery.MultiFile.pack.js" type="text/javascript">
3.) Добавьте вход файла на своей веб-форме с классом = "много":
<input type="file" class="multi" />
4.) Выполните некоторый код или назовите метод как это на представлении формы:
void SendMail(string from, string to, string subject, string body, string smtpServer)
{
// create mail message
MailMessage mail = new MailMessage(from, to, subject, body);
// attach posted files
for (int i = 0; i < Request.Files.Count; i++)
{
HttpPostedFile file = Request.Files[i];
mail.Attachments.Add(new Attachment(file.InputStream, file.FileName));
}
//send email
new SmtpClient(smtpServer).Send(mail);
}
Это - все, что я должен был сделать для присоединения нескольких файлов к электронному письму, посланному от aspx страницы.
Если Вы хотите увеличить общий размер файлов, которые могут быть загружены, добавить это к Вашему web.config файлу:
<system.web>
<httpRuntime executionTimeout="240" maxRequestLength="30720"/>
</system.web>
executionTimeout измеряется в секундах, и maxRequestLength измеряется в килобайтах. В этом примере запрос будет тайм-аут после 4 минут и позволит запрос 30 МБ.
Я настоятельно рекомендую Uploadify как средство для загрузки нескольких файлов. Он использует jquery и flash, чтобы позволить пользователю загружать сразу несколько файлов с помощью Ctrl + щелчок по всем нужным файлам. Затем он отображает очередь загрузки файлов и удаляет файл из очереди по завершении. Он также позволяет указать, какое расширение разрешить пользователю загружать, что избавляет вас от необходимости выполнять проверку расширения.
РЕДАКТИРОВАТЬ:
Если вы не хотите использовать flash, Ajax Upload тоже работает очень хорошо. Если у пользователей сайта моей компании нет нужной версии flash, которая лучше всего работает с uploadify, я переключаюсь на Ajax Upload. Они оба мне подходят.