私たちのフォームでは、 や などの他のウィジェットに比べて入力フィールドと が広すぎることに気付きp:inputText
ましp:inputTextarea
た。フォームは ap:panelGrid で囲まれています。p:select*
p:commandButton
テストページは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>
D E B U G
</title>
</h:head>
<h:body>
<h:form>
<p:panelGrid columns="2">
<p:outputLabel value="ID:" />
<p:inputText style="width: 100%;" />
<h:outputText />
<p:commandButton value="all = width: 100%" style="width: 100%;" />
<p:outputLabel value="Status:" />
<p:selectOneMenu style="width: 100%;">
<f:selectItem itemLabel="Status A" itemValue="1" />
<f:selectItem itemLabel="Status B" itemValue="2" />
<f:selectItem itemLabel="Status C" itemValue="3" />
</p:selectOneMenu>
<p:outputLabel value="Remarks:" />
<p:inputTextarea rows="6" style="width: 100%;" />
</p:panelGrid>
<br />
<p:panelGrid columns="2">
<p:outputLabel value="ID:" />
<p:inputText style="width: 300px;" />
<h:outputText />
<p:commandButton value="all = width: 300px" style="width: 300px;" />
<p:outputLabel value="Status:" />
<p:selectOneMenu style="width: 300px;">
<f:selectItem itemLabel="Status A" itemValue="1" />
<f:selectItem itemLabel="Status B" itemValue="2" />
<f:selectItem itemLabel="Status C" itemValue="3" />
</p:selectOneMenu>
<p:outputLabel value="Remarks:" />
<p:inputTextarea rows="6" style="width: 300px;" />
</p:panelGrid>
</h:form>
</h:body>
</html>
Firefox では次のように表示されます。
IE 9 (IE 8 モード) では次のようになります。
パーセンテージ widths<p:inputText style="width: 100%;" />
では、コンポーネントのレンダリングが少し広すぎます。同じことが絶対幅にも当てはまるようです<p:inputText style="width: 300px;" />
。
PrimeFaces CSS には付属していることがわかりました
.ui-inputfield {
font-weight: normal;
margin: 0;
outline: medium none;
padding: 4px;
}
、パディングを削除すると正しい幅になります。ただし、パディングは入力のテキスト インセット用です。CSS セレクターのオーバーライドは実際には機能しません。
質問:
とをどのように修正しますp:inputText
かp:inputText
? これをどのように調整するのが最善ですか?カスタムの PrimeFaces レンダラーを使用していますか?
補遺:
ソースを調べましたが、これを変更できる場所(InputRendererクラス?)が見つかりませんでした。どこを見るべきかについてのヒントは大歓迎です(コメントで!)。
コンポーネントが正しいサイズを示しているように見えることに注意してくださいp:calendar
(ただし、パーセンテージ幅のみ)。PrimeFaces には問題があるようです。