Пиша малко уеб приложение в Play! и се опитвам да използвам UniformJS (http://uniformjs.com/), за направете моите елементи на формата да изглеждат добре. Една страница от приложението позволява на потребителите да качат файл:
#{ form @Application.upload(), id:'uploadform', enctype:'multipart/form-data'}
<input type="file" id="uploadFile" name="uploadFile"/>
<input type="submit" id="surveyChooseFileButton" class="button" value="Upload" />
#{/form}
Контролерът изглежда така:
public static void upload(@Required File uploadFile, @Required String surveyName) {
...
}
Всичко това е точно като една от Play! примери (http://www.playframework.org/documentation/1.0/5things#a5.Straightforwardfileuploadmanagementa) и всичко работи добре. Проблемът е, когато прилагам Uniform към моя входен файл:
$(function(){ $("input:file").uniform(); });
Сега контролерът получава нулев файл обект! Има ли начин да се заобиколи това?
АКТУАЛИЗАЦИЯ:
Премахването на идентификаторите не го прави (въпреки че това изглеждаше много правдоподобно!). View-source на обидния елемент разкрива:
<div id="uniform-uploadFile" class="uploader"> <!-- A new div -->
<!-- My input element turns invisible -->
<input id="uploadFile" type="file" name="uploadFile" size="19" style="opacity: 0;">
<!-- Uniform adds these -->
<span class="filename" style="-moz-user-select: none;">No file selected</span>
<span class="action" style="-moz-user-select: none;">Select</span>
</div>
Все още не знам какво се случва, но това е крайният резултат.