我是java的新手。我试图四处搜索,但没有找到与我的问题类似的东西。
我在菜单中有列表项( <script>
function LoginDiv() {
var joinAs = document.getElementById('joinAs');
while(joinAs.firstChild)
{
joinAs.removeChild(joinAs.firstChild);
}
var innerText = "<div class='form row'>";
innerText += <?php $form=$this->beginWidget('CActiveForm', array('id'=>'login-form','enableClientValidation'=>true,'clientOptions'=>array('validateOnSubmit'=>true,),)); ?>
innerText += " <div id='LoginDiv' class='answer_list' ><div class='col-lg-12' style='background-color:#F5F5F5;'><div class='row' style='margin:2% 0% 2% 0%'><div align='center' class='col-lg-6'><img src='images/close.png' onclick='hideDiv()' style='width:6%;cursor: pointer'></div><div align='center' class='col-lg-6'><p style='font-size:22px'>LOGIN</p></div></div><div style='clear:both'></div><div align='center' style='width:30%; margin:auto'><form action='' method='POST'><div class='form-group has-feedback'><label for='inputName' class='col-sm-2 col-xs-2 control-label' style='font-weight: 100;'>USERNAME</label>";
innerText += <?php echo $form->textField($model,'username'); ?> + "</div>" + <?php echo $form->error($model,'username'); ?>
innerText += "<div class='form-group has-feedback'><label for='inputName' class='col-sm-2 col-xs-2 control-label' style='font-weight: 100;'>PASSWORD</label>" + <?php echo $form->passwordField($model,'password'); ?> +"</div>" + <?php echo $form->error($model,'password'); ?> + "<div class='row'><div class='col-xs-4'><button type='submit' class='btn btn-primary btn-block btn-flat' onclick='PostLogin()'>Sign In</button></div></div></form></div></div></div>" + <?php $this->endWidget(); ?> + "</div>";
joinAs.innerHTML= innerText;
}
</script>
<script src='js/validations.js' ></script>
</html>
- s和<ul>
- s)我想在<li>
标记中添加active
类,具体取决于操作的名称使特定菜单项处于活动状态。
为此,我使用了这段代码
<li>
这段代码在所有页面上都正常工作,除了页面上的动作名称是${request.context['struts.actionMapping'].name}
,即空字符串。在操作名称仅为""
""
这是我的struts.xml
<s:set var="action">${request.context['struts.actionMapping'].name}</s:set>
<ul class="nav navbar-nav navbar-right">
<li class="<s:if test="%{#action == ''}">active</s:if>">
<s:a href="/crudoperation">Dashboard</s:a>
</li>
<li class="<s:if test="%{#action == 'add'}">active</s:if>">
<s:url var="addUrl" action="add"/>
<s:a href="%{addUrl}">Add Student Profile</s:a>
</li>
<li class="<s:if test="%{#action == 'edit'}">active</s:if>">
<s:url var="editUrl" action="edit"/>
<s:a href="%{editUrl}">Edit Profile</s:a>
</li>
<li class="<s:if test="%{#action == 'view'}">active</s:if>">
<s:url var="viewUrl" action="view"/>
<s:a href="%{viewUrl}">View Profile</s:a>
</li>
</ul>
答案 0 :(得分:2)
如果操作名称为空,${request.context['struts.actionMapping'].name}
将在<s:set>
标记正文中产生空白,该正文等于<s:set var="some"></s:set>
,并且会将值堆栈中的顶级对象指定给{{1}变量。通常,值栈中的顶级对象是动作类实例。所以你在变量中得到some
而不是空字符串。
要获取空操作名称,只需在com.javaguy.struts2.IndexAction@4349f7db
标记中使用OGNL。
<s:set>
同样Andrea已经提到避免在变量中使用关键字(例如<s:set var="some" value="#request.context['struts.actionMapping'].name" />
)。