为什么Bootstrap的表单元素使用Struts2-Boostrap-Plugin渲染得非常糟糕?

div*_*diu 0 html jsp struts2 twitter-bootstrap struts2-bootstrap-plugin

当我添加struts标签时,格式化消失.我该怎么办?

这是我的代码:

    <div class="panel-body" style="background-color:;">

    <div align="center">
        <font size=3> <s:form id="FormAddUser" name="FormAddUser"
                action="AddUser" method="post" class="form-horizontal">
                <div class="row" align="center">
    <div class="col-sm-6">
        <div class="col-sm-4" align="right">
            <label>User ID</label>
        </div>

        <s:textfield name="UserId" class="form-control"></s:textfield>
    </div>
</div>
<br>
<div class="row" align="center">
    <div class="col-sm-6">
        <div class="col-sm-4" align="right">
            <label>Name</label>
        </div>

        <s:textfield name="Name" class="form-control"></s:textfield>
    </div>
</div>
<br>
<div class="row" align="center">
    <div class="col-sm-6">
        <div class="col-sm-4" align="right">
            <label>Address</label>
        </div>

        <s:textarea name="Address" class="form-control"></s:textarea>
    </div>
</div>
<br>
<div class="row" align="center">
    <div class="col-sm-6">
        <div class="col-sm-4" align="right">
            <label>Birth date</label>
        </div>

        <s:textfield name="DOB" class="form-control" placeholder="dd/mm/yy"></s:textfield>
    </div>
</div>
<br>
<div class="row" align="center">
    <div class="col-sm-6">
        <div class="col-sm-4" align="right">
            <label>Password</label>
        </div>

        <s:password name="Password" class="form-control"></s:password>

    </div>
</div>
<br>
<div class="row" align="center">
    <div class="col-sm-6">
        <div class="col-sm-4" align="right">
            <label>Email Id</label>
        </div>

        <s:textfield name="EmailId" class="form-control"
            placeholder="firstname.lastname@iiitb.org"></s:textfield>
    </div>
</div>
<br>
<div class="row" align="center">
    <div class="col-sm-6">
        <div class="col-sm-4" align="right">
            <label>Specialization</label>
        </div>

        <s:textfield name="Specialization" class="form-control"
            placeholder="CS/DS/NC/SE"></s:textfield>
    </div>
</div>
<br>
<div class="row" align="center">
    <div class="col-sm-6">
        <div class="col-sm-4" align="right">
            <label>Specialization</label>
        </div>

        <s:file name="Image" class="form-control" id="Image" key="Image"
            label="Select a File to change photo" enctype="multipart/form-data"></s:file>

    </div>
</div>
<br>
<div class="row" align="center">
    <div class="col-sm-7">
        <s:submit class="btn btn-primary" label="Add" onclick="check()" />
        <a href="admin.jsp" class="btn btn-primary btn-md"> <span
            class="glyphicon glyphicon-repeat"></span> Back
        </a>
    </div>
</div>

</s:form>


</font>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是它呈现的方式.问题是由于struts标签.我已经包含了struts-bootstrap jar.什么可能是错误?

在此输入图像描述

And*_*ios 5

Struts2使用Themes从Tags生成HTML:选择不同的主题,输出中的不同HTML.

默认主题是XHTML,生成<td>,<label>和其他的东西在你的元素.

通常,我建议使用简单的主题,几乎不生成任何其他代码,这将使您的代码按原样运行.将此常量放在struts.xml中以检查它:

<constant name="struts.ui.theme" value="simple" />
Run Code Online (Sandbox Code Playgroud)

但在你的情况下,既然你说你已经在你的项目中包含了Struts2-bootstrap-plugin,那么......只需使用它!您没有在代码中使用它...包括JAR是不够的,您需要将引导主题设置为默认主题:

<constant name="struts.ui.theme" value="bootstrap" />
Run Code Online (Sandbox Code Playgroud)

并声明struts-bootstrap taglib使用<sb:head/>标记,如官方文档中所述:

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sb" uri="/struts-bootstrap-tags" %>
<!DOCTYPE html>
<html lang="en">
<head>
    ...
    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <sb:head/>
</head>
<body>
...
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后删除您手动编写的所有HTML,并开始使用该插件.