我是JavaScript的新手。
我有:
HTML:
<form>
<t:inputFileUpload required="true" id="upload" onchange="uploadOnChange()" />
<input id="filename" type="hidden" />
<h:commandButton class="btn btn-primary" value="Upload"
action="#{controller.upload}" />
</form>
的javascript:
<script>
function uploadOnChange() {
document.getElementById('upload').onchange = name;
var filename = name;
var lastIndex = filename.lastIndexOf("\\");
if (lastIndex >= 0) {
filename = filename.substring(lastIndex + 1);
document.getElementById('filename').value = filename;
}
</script>
我想要做的就是通过inputFileUpload,浏览我的目录,我选择的文件名,并将此名称作为字符串传递给jsf控制器。
有人可以帮助我吗?
编辑:
如果我添加到我的表单enctype="multipart/form-data
,似乎控制器方法“上传”什么都不做。
答案 0 :(得分:0)
假设<t:inputFileUpload>
具有value
属性,我会将代码更改为以下内容:
function uploadOnChange() {
var filename = document.getElementById('upload').value;
var lastIndex = filename.lastIndexOf("\\");
if (lastIndex >= 0) {
filename = filename.substring(lastIndex + 1);
document.getElementById('filename').value = filename;
}
console.log('Value hidden input: ' + document.getElementById('filename').value);
}
<input type="file" required="true" id="upload" onchange="uploadOnChange()" />
<input id="filename" type="hidden" />