iteye_19590 2009-07-23 09:54
浏览 441
已采纳

structs2 标签的css设置

有个填写客户信息的form表单,借助structs2.1的标签传递字段给CusAction.  

在这个表单中,有些是[color=blue]必填字段[/color],希望设置标签中的[color=red]lable属性的颜色[/color]来提示,字段后面有“[color=indigo]提示文字[/color]”,

不知道该如何实现。


[b]问题补充:[/b]
对于一楼的建议做下解释:
若是采用了html代码,Action中要定义一大堆对应form表单的字段,再加上GET/SET方法,会有一大堆冗余代码,Action看起来太累。

对于二楼的建议,我查了下生成的html代码,如下:

在IE中生成html代码:

[code="java"]



客户电话:

id="cusadd_tel"/>

[/code]

如果在css中定义了lable,

表单中所用的标签都统一用此样式了。

问题是我[color=blue]只想让必填字段用此样式[/color]?

[b]问题补充:[/b]
一楼说的的确是一种实现方式,不过小弟不才,用css定义样式表有些望而却步。 看来又涉及到另一个问题了:Action取得form表单字段的方式。查了些资料,说有3中方式:

  1. 属性取值
    Action须定义与form同名的字段属性,并提供get/set方法即可以取得form表单中的值。 不足之处是Action中定义的属性及相应的get/set方法有一大堆,看起来比较臃肿。

    [code="java"] [/code]

    2.领域取值
    Action定义与form关联的对象,通过“对象名.属性名”取值,一楼说的应该是第二种吧?

    [code="java"] [/code]

    或者
    [code="java"] [/code]

    3.模型驱动

    structs2独特的模型驱动方式,Action实现ModelDriven接口,并提供getModel() 方法,这样做的好处就是form中可以直接写“属性名”,Action就可取得form表单中对应的字段值。

[code="java"]public class CusAction extends ActionSupport implements ModelDriven{

privateCus cus=new Cus();

……

public Cus getModel() {

 return cus;

}

}[/code]

cusAdd.jsp

 [code="java"] <S:textfield  name="tel"  label="用户电话">[/code]

对于第2种方法和第3种方法,有何区别,用谁更好?

----[color=red]额外加5分求教[/color]

回到第一个问题:

目的是让[color=blue][size=x-small]"用户电话"[/size][/color]显示为蓝色(必填字段),其他[size=small]非必填字段[/size]标签内容显示为统一样式。

试过后发现 标签中 cssStyle可用,但只会改变输入文字的样式。

难道真的不可以在structs标签中定义lable颜色了吗?

  • 写回答

6条回答 默认 最新

  • iteye_15225 2009-07-23 14:10
    关注

    1:楼主用的Struts2的theme应该是xhtml的,如果用这种的话要改变Label的颜色只能通过css实现了。

    .tdLabel label{


    }

    如果楼主要求只能只读的才能使用的话,那么也比较简单,新增一种theme就可以了。

    比如新增了theme="my",使得my集成xthml。然后在my下添加controlheader.ftl文件和controlheader-core.ftl(这两个文件可以从xhtml目录下Copy过来)。

    修改这两个文件,在controlheader.ftl中指定使用my下的controlheader-core.ftl,在controlheader-core中碰到label的地方添加如下判断:

    [code="xml"]<#if parameters.label??>

    <#if parameters.id??>
    for="${parameters.id?html}" <#t/>
    </#if>
    <#if hasFieldErrors>
    class="errorLabel"<#t/>
    <#else>
    class="label"<#t/>
    </#if>
    [color=red]<#if parameters.required?default(false)>
    style="color: red;"<#t/>
    </#if>[/color]

    ><#t/>[/code]
    

    红色部分是添加的。

    然后在struts2中指定theme="my"即可


    2和3的区别是:

    2是把Action压栈,所以需要使用领域对象才能获取对象;
    3是把领域对象压栈,所以可以直接获取属性

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题