代码如下:
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<f:verbatim>
<style type="text/css">
.divstyle{
BORDER-RIGHT: 3px outset;
BORDER-TOP: 3px outset;
BACKGROUND: #ffffff; BORDER-LEFT: 3px outset; 
BORDER-BOTTOM: 3px outset; 
width:350px;height:250px;
overflow:auto;
}
.uploadbar{
background-image: url(images/title_bar.gif);
text-align:left;
width:350px;
height:20px;color: #FFFFF;
}
</style>
<script language="javascript">
    var rindex = 0 ;
    var filesArray = new Array();
function addfile(){
var filestable = document.getElementById("filestable");
var index = filestable.rows.length - 1;
var newRow = filestable.insertRow();
var c0 = newRow.insertCell(0);
var c1 = newRow.insertCell(1);
var c2 = newRow.insertCell(2);
c2.innerHTML = "<input type='file' style='display:block;'  name='"+rindex+"' id='"+ rindex+"'/>";
document.getElementById(rindex).click();
var filevalue = document.getElementById(rindex).value;
if(filevalue!=""){
c0.innerHTML = filevalue ;
c1.innerHTML = "<input type='button' value='del this row' onClick='deleteCurrentRow("+rindex+")'>";
alert(document.getElementById(rindex).value);
alert(filesArray.length>0);
rindex++;
}else{
filestable.deleteRow(filestable.rows.length - 1);
}
return;
}

function deleteCurrentRow(index){
    alert(index);
    filesArray.splice(index, 1 );  
var currRowIndex=window.event.srcElement.parentNode.parentNode.rowIndex;
var filestable = document.getElementById("filestable");
filestable.deleteRow(currRowIndex);
}
</script>
<FORM name="uploadform" action="/yauw/upload" method="post" enctype="multipart/form-data" >
<TABLE width="400px">
<TR>
<TD class="uploadbar">UPLOAD</TD>
</TR>
<TR>
<TD>
<TABLE>
<TR>
<TD colspan="2" style="background-color:#EEEEEE">file</TD>
</TR>
<TR>
<TD rowspan="2"><div class="divstyle"><table id="filestable"></table><div></TD>
<TD><INPUT TYPE="button" name="browse" value="BROWSE" onclick="addfile();"></TD>
</TR>
<TR>
<TD><INPUT TYPE="submit" name="upload" value="UPLOAD"></TD>
</TR>
</TABLE>
</TD>
</TR>
<TR>
<TD><div class="divstyle"><table></table><div></TD>
</TR>
</TABLE>
</form>
</f:verbatim>

解决方案 »

  1.   

    这个问题的确很怪,权限问题,file框是不能赋值的
    你把submit按纽换成button就能看到错误了
      

  2.   

    不关button的事,是你脚本问题。
      

  3.   

    哦,这个是html规范的限制,对于file类型,只能通过点击方式访问,不能通过js操纵它这是从安全角度考虑的。。
      

  4.   

    就是这个了,这个控件是有安全限制的,VALUE可以JS赋值但是没有意义,想想就知道了。我隐藏个FILE,用JS赋值,随意拿走你机器上的文件好吗。所以只可以单击来激活控件
      

  5.   


    +1
    file样式不好弄
    用button模拟又有安全问题
    我是用flash解决的
      

  6.   

    lz的对上传文件的需求可以通过jquery插件方便的实现