f:attribute 与 af:clientAttribute 用法

本文介绍了在JavaServer Faces (JSF) 中如何使用f:attribute与af:componentAttribute来传递数据给事件监听器或客户端脚本。通过具体的示例,展示了如何将组件属性的值传递给bean中的方法以及JavaScript函数。

f:attribute与af:clientAttribute用法

(2013-09-26 10:44:34)
标签:

it

类:
f:attribute,af:clientAttribute可以在监听时取到相对应binding的值。

如用for Each 循环 或表时,取当前行的字段的值
在bean取用 f:attribute

在用会用actionlistener的组件下加<wbr>f:attribute</wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr>&lt;af:commandLink partialSubmit="true"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>clientComponent="true"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>id="cl2"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>text="·#{bindings.EcpExInfoAnnounceVO1.children[stat.index].InfoAnnounceTitle}"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>inlineStyle="color:rgb(99,99,99); font-size:12.0px;"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>actionListener="#{HomePageBean.gotoinfo}"&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>&lt;f:attribute name="InfoAnnounceId"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr>value="#{bindings.EcpExInfoAnnounceVO1.children[stat.index].InfoAnnounceId}"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>&lt;/af:commandLink&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
bean代码<wbr></wbr>
<wbr>public void gotoinfo(ActionEvent actionEvent) {</wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>Map attr = actionEvent.getComponent().getAttributes();</wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>String InfoAnnounceId = attr.get("InfoAnnounceId").toString();</wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>System.out.println(InfoAnnounceId);</wbr></wbr></wbr></wbr>
}

在js取用 af:clientAttribute
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>&lt;af:commandLink id="cl4" partialSubmit="true"&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>&lt;af:image clientComponent="true" id="image5"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>source="#{bindings.ProfileValue.inputValue}#{bindings.result.children[stat.index].ShortPicUrl}"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>inlineStyle="width:150px;height:135px;"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>imageMapType="server"&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>&lt;af:clientAttribute value="#{bindings.ProfileValue.inputValue}#{bindings.result.children[stat.index].DetailPicUrl}"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>name="url"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>&lt;af:clientAttribute name="ProductName"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>value="产品名称:#{bindings.result.children[stat.index].ProductName}"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>&lt;af:clientAttribute value="产品详情:#{bindings.result.children[stat.index].Description}"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>name="Description"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>&lt;af:clientListener method="showDetail"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr>type="click"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>&lt;af:showPopupBehavior triggerType="click"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>align="endAfter"</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>popupId="::ProductDeatilPopup"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>&lt;/af:image&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>&lt;/af:commandLink&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

js代码
<wbr><span></span><wbr><span></span><wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>function showDetail(e) {</wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>var im = e.getSource();</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>var name = im.getProperty("ProductName");</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>var popup = AdfPage.PAGE.findComponent("ProductDeatilPopup");</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>var productname = popup.findComponent("ProductDeatilNameOt");</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>var image = popup.findComponent("ProductDeatilImage");</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>if (image) {</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>image.setSource(im.getProperty("url"));</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>}</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>if (productname) {</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>productname.setValue(im.getProperty("ProductName"));</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>}</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>var desc = popup.findComponent("ProductDeatilOt");</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>if (desc) {</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>desc.setValue(im.getProperty("Description"));</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>}</wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span><wbr><span></span><wbr><span></span>}</wbr></wbr></wbr></wbr>
<wbr><span></span><wbr><span></span></wbr></wbr>
基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算子的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制问题,并提供完整的Matlab代码实现。文章结合数据驱动方法Koopman算子理论,利用递归神经网络(RNN)对非线性系统进行建模线性化处理,从而提升纳米级定位系统的精度动态响应性能。该方法通过提取系统隐含动态特征,构建近似线性模型,便于后续模型预测控制(MPC)的设计优化,适用于高精度自动化控制场景。文中还展示了相关实验验证仿真结果,证明了该方法的有效性和先进性。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事精密控制、智能制造、自动化或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能控制设计;②为非线性系统建模线性化提供一种结合深度学习现代控制理论的新思路;③帮助读者掌握Koopman算子、RNN建模模型预测控制的综合应用。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现流程,重点关注数据预处理、RNN结构设计、Koopman观测矩阵构建及MPC控制器集成等关键环节,并可通过更换实际系统数据进行迁移验证,深化对方法泛化能力的理解。
<think>嗯,用户的问题是关于JSF中的f:attribute标签和actionListener的关系,以及是否这个标签只能被actionListener接收,还是也能用于其他监听器比如ajaxlistener。我需要先回顾一下JSF的相关知识,特别是关于f:attribute的使用场景。根据之前的引用内容,引用[1]提到了f:setPropertyActionListener的用法,可以设置下一个视图的托管bean属性。而用户现在的问题是关于f:attribute,这个标签通常用于在组件上设置属性,然后在监听器中获取。我之前在回答中提过,actionListener可以通过ActionEvent获取组件属性,也就是使用f:attribute传递的参数。例如,在commandButton上添加f:attribute,然后在actionListener方法中通过event.getComponent().getAttributes()来获取。 现在用户的问题是,f:attribute是否只能用于actionListener,还是也可以用于其他监听器,比如ajaxlistener。我需要确认不同的监听器类型是否能访问到通过f:attribute设置的属性。比如,ajax listener通常处理的是AjaxBehaviorEvent,这个事件对象是否也能访问到组件的属性? 另外,参考引用[3]中的例子,a4j:support标签使用action属性,可能涉及参数传递。而引用[2]提到了a4j:actionparam,可能和参数传递有关,但用户的问题是关于f:attribute的通用性。首先,f:attribute是JSF的核心标签,用于在组件上设置属性,这些属性存储在组件的属性映射中。任何能够访问该组件的事件监听器都应该可以通过事件对象获取组件实例,进而访问这些属性。因此,不仅actionListener可以访问,其他类型的监听器,如ajax listener,也应该可以访问。例如,ajax listener方法接收AjaxBehaviorEvent参数,可以通过event.getComponent()获取触发事件的组件,然后调用getAttributes()方法获取f:attribute设置的属性值。这说明f:attribute并不局限于actionListener,而是可以用于任何能够访问组件属性的监听器。不过,用户可能在实际使用中遇到问题,比如是否正确传递参数,或者是否在监听器中正确处理事件对象。需要验证这一点,并提供代码示例说明两者的使用情况。此外,引用[1]中的f:setPropertyActionListener和f:attribute的区别在于,前者直接设置目标bean的属性,而后者是在组件上存储属性,供监听器后续读取。因此,两者的用途不同,但都是参数传递的方式。 总结来说,f:attribute可以用于任何类型的监听器,只要监听器能够通过事件对象获取到组件实例,并访问其属性。因此,不仅actionListener可以使用,ajaxlistener也可以使用。需要给出具体的代码示例,说明在ajaxlistener中如何获取f:attribute的值,并引用相关文献中的例子,比如引用[3]中的ajax组件使用方式。</think>### `f:attribute`监听器关系解析 #### 一、核心结论 `f:attribute`**不局限于`actionListener`**,它可以在**任何事件监听器**中通过组件属性访问,包括`ajax listener`。其本质是为UI组件添加自定义属性,具体监听器类型无关[^1][^3]。 #### 二、使用场景对比 | **监听器类型** | **事件对象** | **属性获取方式** | |---------------------|----------------------|--------------------------------------| | `actionListener` | `ActionEvent` | `event.getComponent().getAttributes()` | | `ajax listener` | `AjaxBehaviorEvent` | `event.getComponent().getAttributes()` | | `valueChangeListener`| `ValueChangeEvent` | `event.getComponent().getAttributes()` | #### 三、数学关系表达 对于任意监听器$L$,若其事件对象$E$满足: $$ E \in \{ \text{ActionEvent}, \text{AjaxBehaviorEvent}, \text{ValueChangeEvent} \} $$ 则可通过$E$的组件访问属性: $$ \text{属性值} = E.\text{getComponent}().\text{getAttributes}().\text{get}("attrName") $$ #### 四、代码验证 1. **`actionListener`使用示例** ```xhtml <h:commandButton value="操作" actionListener="#{bean.handleAction}"> <f:attribute name="mode" value="edit"/> <!-- 属性设置 --> </h:commandButton> ``` ```java public void handleAction(ActionEvent event) { String mode = (String) event.getComponent().getAttributes().get("mode"); // 成功获取 } ``` 2. **`ajax listener`使用示例** ```xhtml <h:inputText value="#{bean.text}"> <f:ajax event="keyup" listener="#{bean.handleAjax}"> <f:attribute name="source" value="inputField"/> <!-- 属性设置 --> </f:ajax> </h:inputText> ``` ```java public void handleAjax(AjaxBehaviorEvent event) { String source = (String) event.getComponent().getAttributes().get("source"); // 成功获取 } ``` #### 五、关键差异说明 1. **作用域差异** - `f:attribute`作用于**组件级别**,属性存储在`UIComponent`中 - `f:param`通过请求参数传递,属于**请求级别**[^2] 2. **`f:setPropertyActionListener`对比** ```xhtml <!-- 直接更新目标bean属性 --> <h:commandButton action="#{bean.next}"> <f:setPropertyActionListener target="#{beanB.data}" value="#{beanA.data}"/> </h:commandButton> ``` 该标签直接操作bean属性,而`f:attribute`仅存储中间数据[^1] #### 六、最佳实践 1. **跨监听器复用属性** ```xhtml <h:commandButton value="提交" actionListener="#{bean.validate}" action="#{bean.save}"> <f:attribute name="version" value="2.0"/> <f:ajax execute="@form" listener="#{bean.logAction}"/> </h:commandButton> ``` ```java // 三个监听器均可通过event.getComponent().getAttributes().get("version")获取版本号 ``` 2. **动态属性绑定** ```xhtml <f:attribute name="dynamicAttr" value="#{bean.calculatedValue}"/> <!-- 支持EL表达式 --> ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值